精华内容
下载资源
问答
  • Javasctipt事件概念

    2019-10-02 23:28:11
    所谓事件,是指 JavaScript 捕获到用户的操作,做出正确的响应。例如,用户单击鼠标弹出一个窗口,把鼠标移动到某个元素上产生变化。JavaScript 事件一般与DOM元素绑定。 JavaScript处理事件的基本机制: 对...

    所谓事件,是指 JavaScript 捕获到用户的操作,并做出正确的响应。例如,用户单击鼠标弹出一个窗口,把鼠标移动到某个元素上产生变化。

    JavaScript 事件一般与DOM元素绑定。

    JavaScript处理事件的基本机制:

    1. 对DOM元素绑定事件处理函数;
    2. 监听用户的操作;
    3. 当用户在相应的DOM元素上进行与绑定事件对应的操作时,事件处理函数做出响应;
    4. 将处理结果更新到 HTML 文档。

     

    Javascript常用事件

    • onclick 单击

    • ondblclick 双击

    • onfocus 元素获得焦点

    • onblur 元素失去焦点

    • onmouseover 鼠标移到某元素之上

    • onmouseout 鼠标从某元素移开

    • onmousedown 鼠标按钮被按下

    • onmouseup 鼠标按键被松开

    • onkeydown 某个键盘按键被按下

    • onkeyup 某个键盘按键被松开

    • onkeypress 某个键盘按键被按下并松开

     

    转载于:https://www.cnblogs.com/LLMjiayou7/p/9394328.html

    展开全文
  • 事件的基本概念

    2019-09-29 16:03:32
    只有继承自UIResponder的对象才能接受处理事件,这类对象称为响应者对象 UIApplication UIViewController UIView ... 产生相应交互时,系统会自动调用相关事件 触摸:touchesBegan: 移动:touchesM...

    用户在使用App的过程中会产生各种事件:

    • 触摸事件(手势与屏幕交互)
    • 加速计事件(摇一摇)
    • 远程控制事件(耳麦)

    只有继承自UIResponder的对象才能接受并处理事件,这类对象称为响应者对象

    • UIApplication
    • UIViewController
    • UIView
    • ...

    产生相应交互时,系统会自动调用相关事件

    • 触摸:touchesBegan:
    • 移动:touchesMoved:
    • 离开:touchesEnded:
    • 系统事件打断触摸:touchesCancelled:

    UITouch对象

    • 作用:保存了触摸的相关信息
    • 通过相应属性与方法获取

    UIEvent对象

    • 事件对象,记录了事件产生的时刻和类型
    • 还提供了相应方法可以获得在某个View上面的触摸对象UITouch

    实现View随手指拖拽而移动

    -(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        //0.获取UITouch对象
        UITouch *touch = [touches anyObject];//当前只有一个UITouch对象,可以使用anyObject
        //1.获取手指当前触摸点
        CGPoint curP = [touch locationInView:self];
        //2.获取手指上一个触摸点
        CGPoint preP = [touch previousLocationInView:self];
        //3.计算偏移量
        CGFloat offsetX = curP.x - preP.x;
        CGFloat offsetY = curP.y - preP.y;
        //4.修改View的位置
        //MakeTranslation:会清空上一次的形变
        //self.transform = CGAffineTransformMakeTranslation(offsetX, 0);
        self.transform = CGAffineTransformTranslate(self.transform, offsetX, offsetY);
    }

    转载于:https://www.cnblogs.com/ShaRuru/p/5100468.html

    展开全文
  • 本帖最后由 zhanggx 于 2014-7-10 13:57 编辑MATLAB面向对象程序设计可以通过事件的发生与否来实现各个对象之间的通信联系,完成一些指定的动作,即用事件的发生来触发指定函数的调用过程。这一点类似于Visual C++...

    本帖最后由 zhanggx 于 2014-7-10 13:57 编辑

    MATLAB面向对象程序设计可以通过事件的发生与否来实现各个对象之间的通信联系,并完成一些指定的动作,即用事件的发生来触发指定函数的调用过程。这一点类似于Visual C++中的“消息传递(message based),事件驱动(event driven)”的运行机制。本章将主要介绍事件和听众的概念,以及如何使用事件模型来实现基于事件驱动的具有交互响应功能的程序设计过程。

    8.1  事件与听众的概念

    8.1.1  事件的概念及事件模型

    什么是事件(event)呢?事件的含义很广泛。一般来说,从程序上可探测到的任何动作,都能够产生相应的事件,并可以将该事件的发生告知其他对象,来实现对象之间的通信。这里事件是用来标识发生的某件事情的。

    在MATLAB面向对象程序设计中,事件表示发生在类实例(对象)中的某些变化或行为,这些变化包括:

    (1)对类(对象)中数据的修改;

    (2)方法的执行;

    (3)查询或设置一个属性成员值;

    (4)析构一个对象。

    在MATLAB中,事件驱动和事件响应过程构成了一个完整的事件模型。组织一个事件模型的一般步骤如下。

    (1)命名事件:在一个handle型类中声明一个标识符来代表事件,这个类就是产生事件的类,简称事件类,相应的实例称为事件对象;

    (2)创建听众:在一个类中声明事件后,就可以关联一个相应的听众,一般用addlistener函数来定义听众;

    (3)定义一个方法来确定何时触发这个事件,并通过notify函数对听众进行广播来告之该事件的发生;

    (4)定义回调函数:当听众接收到某事件发生的信息时,就会去执行一个与之关联的回调函数,因此还要定义一个回调函数。

    在定义听众时,既可将该听众与产生事件的对象生命周期进行绑定,也可将其限制在听众对象的生存期和作用范围内。

    图8-1给出了一个简单事件模型的示意图,其中时钟类Mclock对象的事件块中有Alarm事件,因此它是产生事件的对象。用户通过调用方法AlarmSetChange类触发事件Alarm,然后通过Notify函数将事件广播给听众Listener1、Listener2和Listener3。由于听众Listener1的成员EvenName的值与事件Alarm名称匹配,于是MATLAB就去调用听众Listener1中通过FunctionHandle注册的回调函数Fun1。

    图8-1  事件模型示意图

    8.1.2  听众的概念

    在上面的事件模型中,多次提到了听众,那么什么是听众(listener)呢?在MATLAB中,听众是用来接收事件发生消息的对象,是event.listener类型的对象。在MATLAB面向对象程序设计中,定义一个听众可以采用两种方法:一种方法是使用handle类中的addlistener函数;另外一种方法是直接调用event.listener类的构造函数。具体定义方法将在下节介绍。

    一旦听众创建后,它会一直等待事件发生的消息,一旦关联的事件发生了,听众就会执行一个回调函数。这里event.listener类是handle的子类,表8-1给出了event.listener的全部新增特性。

    表8-1  event.listener类属性成员表

    属性成员        意    义

    Source        事件对象元胞数组

    EventName        事件名

    Callback        事件触发时执行的回调函数(这时需要将特性Enabled设置为true)

    Enabled        是否执行回调函数的开关(默认值是true)

    Recursive        回调函数是否递归调用(默认值是false)

    2014-7-10 13:57 上传

    362ffb8eb34c3ab72d60948fe2348149.gif

    ee377a02506d68defb63fe19b8ce620c.gif

    324619ae995a043bc12bde7d078becb8.gif

    展开全文
  • C#委托和事件概念

    千次阅读 2018-10-10 14:26:41
    事件是软件系统里的两个子系统之间,或者两个模块之间,或者两个对象之间发送消息,处理消息的过程。在面向对象的世界里,就可以统一认为是两个对象之间的行为。 两个对象之间发送的这种消息,对发送方来讲是产生...

    一、事件的本质

    事件是软件系统里的两个子系统之间,或者两个模块之间,或者两个对象之间发送消息,并处理消息的过程。在面向对象的世界里,就可以统一认为是两个对象之间的行为。

    两个对象之间发送的这种消息,对发送方来讲是产生一个事件,对接受方来讲是需要处理某个事件。这种消息可以是用户操作产生的或者软件系统里的某个对象产生的。

                                                                                              对象之间的事件处理
     

    从上图可见,对象一产生一个事件,这个事件发生以后需要对象二执行某种动作。这就是事件机制。对象一是事件的产生者,或者发送者;对象二是事件的接收者或者订阅者。对象一产生某种消息,需要对象二响应并处理这给消息,这就是事件的本质。

    以往的很多软件系统都在采用事件机制处理很多问题。例如从最本质的计算机体系中的软中断处理,到masm中的jump,到c/c++中的回调函数等等。只不过越高级的软件系统处理事件或者其提供的很多处理方法越接近人的思维,而越远离机器思维。构建软件系统的方法从本质上就是从机器思维走向人的思维的过程。

    二、事件机制的好处

    1、直接调用

    采用事件机制有什么好处?事件发送者为什么不直接调用事件接受者提供的处理函数呢?

                                                                                                     调用机制
     

    如果所示,两个对象之间的调用机制。对象B调用对象A的方法,可以通过函数指针或者跳转(汇编语言)等实现。这种方法造成的结果是A和B的紧密耦合,即B对A有很强的依赖性。可以看成B是事件的发布者,A是事件的响应和处理者。不过这种机制用事件机制解释从理论上就比较牵强了。同一种事物,其实现的思想不一样。

    现在假设有个对象C也要响应B的事件。那么,按照上面的这种机制,需求修改对象B的代码,调用对象C的方法。这样机制造成了非常强的依赖关系。代码的修改和扩展非常麻烦。如果对象越多,这种关系越多,整个系统越复杂。如果一个系统里面对象很多,这种依赖关系也很多的情况下,这种调用关系就会十分复杂,对系统的健壮性和优良性会造成影响。

    2、回调机制

    如果按照c#的委托思想,B需要事先提供对事件处理函数的某些回调指针。这样,其它对象,例如A和C就去修改它的回调指针,把自己的方法联系到上面。但是它们之间的耦合关系就比上面简单了。

                                                                                                     回调机制
     

    回调机制的思想已经比较接近委托的概念。其实委托在本质上也就和回调指针差不多,只是概念上更加高级。对象B作为事件的发布者,事先定义一些回调函数指针,然后在本地合适的地方调用这些指针指向的函数。而事件订阅者或者处理者A和C所作的就是让给这些空指针赋值,把自己的事件处理方法赋给它,从而实现B调用A和C的方法。

    在 C 或 C++ 中与委托最为相似的是函数指针。然而,函数指针只能引用静态函数,而委托可以引用静态方法和实例方法。当委托引用实例方法时,委托不仅存储对方法入口点的引用,还存储对为其调用该方法的类实例的引用。与函数指针不同,委托是面向对象、类型安全并且安全的。

    三、事件机制的实现

    1、委托的局限

    如果单纯用委托,对于事件的发布者B来说,假设它发布事件e,对于事件e,它目前已经知道有A和C对象需要订阅这个事件。所以,它就申明两个委托对象引用(本质上类似于函数指针),然后让A和C对象来采用类似回调的机制订阅和响应事件。

    如果后来,有个对象D也需要订阅B的事件e,它怎么办呢?一种情况是D修改B的一个委托对象引用,把自己的处理方法包装成一个委托对象付给它。这样,D就抢夺了A或者C的订阅。否则,就需要修改B的代码,添加一个类似的委托对象引用,以便让D来使用。

    这样做的后果是事件发布者B需要申明很多委托对象的引用变量。结果是弄得代码维护比较混乱,并且使用者也很多,依赖关系也不容易搞清楚,容易发生错误。

    2、事件的引入

    有了委托,就提供了类似回调一样的功能。但是,回调机制需要事件发布者和事件订阅者双方的共同参与和努力。也就是,每增加一个订阅者,那么发布者对象就需要提供一个委托引用,让订阅者挂钩。

    如果事件的发布者发布一个事件以后就不在关心谁来订阅它,那么以后的处理就交给了使用者,而发布者不再关心事件处理者的问题。

                                                                                                    订阅机制
     

    C#事件的事件就是这种订阅机制,真正的订阅。发布者不需要关心订阅者。

    C#事件给订阅者提供了对事件响应的注册和反注册功能。订阅和撤销完全是事件接受方的行为。

    C#事件机制的实现包括以下几步:

    1、 事件发布者定义一个委托类型;

    2、 事件发布者定义一个事件,并且关联到已经定义的委托上。

    3、 事件订阅者需要产生一个委托实例,并把它添加到委托列表。

    所以,事件event可以看成是一个事件列表,订阅者可以注册和撤销自己的响应和处理机制,但是它没有办法更改整个列表(原则上)。所以,提供了更强、更安全的方式。

    四、事件机制的代码实例

                                                                                              应用程序结构图
     

    如图所示,事件发布对象发布一个事件;事件订阅对象订阅和处理该事件。

    using System;

    namespace EventExample

    {

        ///<summary>

        /// MainClass : 主应用程序类

        ///</summary>

        class MainClass

        {

           ///<summary>

           ///应用程序的主入口点。

           ///</summary>

           [STAThread]

           static void Main(string[] args)

           {

               EventPublisher publisher = new EventPublisher();

               EventReader1 reader1 = new EventReader1(publisher);

               EventReader2 reader2 = new EventReader2(publisher);

               publisher.DoSomthing();

               Console.WriteLine("This program already finished!");

               Console.ReadLine();

           }

        }

        ///<summary>

        /// EventPublisher : 事件的发布者。

        ///</summary>

        public class EventPublisher

        {

           // 第一步是申明委托

           public delegate int sampleEventDelegate(string messageInfo);

           // 第二步是申明与上述委托相关的事件

           public event sampleEventDelegate sampleEvent;

           public EventPublisher()

           {

           }

           public void DoSomthing()

           {

               /* ... */

               // 激发事件

               if(this.sampleEvent != null)

               {

                  this.sampleEvent("hello world!");

               }

               /* ... */

           }

        }

        ///<summary>

        /// EventReader1 : 事件的订阅者1。

        ///</summary>

        public class EventReader1

        {

           public EventReader1(EventPublisher publisher)

           {

               publisher.sampleEvent +=

                  new EventExample.EventPublisher.sampleEventDelegate(ResponseEvent);

           }

           private int ResponseEvent(string msg)

           {

               Console.WriteLine(msg + " --- This is from reader1");

               return 0;

           }

        }

        ///<summary>

        /// EventReader2 : 事件的订阅者2。

        ///</summary>

        public class EventReader2

        {

           public EventReader2(EventPublisher publisher)

           {

               publisher.sampleEvent +=

                  new EventExample.EventPublisher.sampleEventDelegate(ResponseEvent);

    publisher.sampleEvent +=

                  new EventExample.EventPublisher.sampleEventDelegate(ResponseEvent);

           }

           private int ResponseEvent(string msg)

           {

               Console.WriteLine(msg + " --- This is from reader2");

               Console.WriteLine("Please:down enter key!");

               Console.ReadLine();

               Console.WriteLine("ok");

               return 0;

           }

        }

    }

                                                                                              程序运行结果
     

    总结:事件发布者发布的事件在实质上可以看成对外提供的回调函数指针列表。这个列表的容量可以动态增长。事件订阅者可以把自己的事件注册到这个列表或者撤销注册,但是它从原则上无法更改或者对其它订阅者的注册产生影响。事件发布者通过两种手段使得订阅者正确地使用事件机制:一是定义一种delegate委托类型,事件订阅者只能按照这种类型定义事件的处理方法;二是定义与这个委托相关的event对象,使得订阅者只负责注册和撤销自己的处理过程而不能随意对别人的处理过程产生影响。

    从运行结果和reader2对象把同一个处理方法注册了两次的前提可以看到,对于一个事件,同一个订阅者可以把同一个处理过程注册多次,而这个方法最终也会被执行多次。

    执行事件订阅列表中方法的顺序不能被保证;而且,在这里采用的是同步调用方法,只有一个响应函数执行完毕,其它函数才会被执行。如果要方法不被阻塞(包括这里的等待用户输入等),就需要采用异步调用方式。

    展开全文
  • C#基础概念事件

    2012-05-02 22:06:59
    事件,是C#编程模型中重要的一个概念,通过对事件的理解,可以更好的了解C#程序运行机制。C#中的事件,可以简单的理解为类或者对象发生了一件事,并且把这件事通知给了其他的类或者对象,其他的类或者对象可以根据...
  • 雷区游戏 :bomb: : 使用HTML,CSS和JavaScript来创建雷区游戏,应用诸如DOM操作和事件处理程序之类的概念
  • 36事件冒泡和捕获-兼容性写法 一、什么是事件冒泡 一条鱼往上吐泡泡,这个泡泡就是事件,一直往上冒的过程中去把它经过的所有元素,只要这个元素身上...不是所有事件都需要事件冒泡,我们需要让事件执行完自身的该...
  •  事件监听者通过实现ApplicationListener接口来定义,配置到spring容器中,spring容器会自动注册该事件监听器。  事件发布者可以通过实现ApplicationEventPublisher接口来定义    调...
  • C# 概念 委托和事件

    2012-09-14 09:26:23
    委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事
  • 它使HTML文档遍历和操作、事件处理、动画和Ajax等操作变得更加简单,具有易于使用的API,可以在多种浏览器中工作。结合了多功能性和可扩展性,jQuery改变了数百万人编写JavaScript的方式。 id是唯一的,如果出现多...
  • 设定:目标:该例子主要通过模拟一个现实生活中的事情,来演示C#中【事件】的用法: 设定:张三和李四是好朋友,他们约定无论谁结婚,都要邀请对方作伴郎; 事情:张三结婚了,于是他按照约定要通知李四邀请...
  • vue 事件总线 前言 正文 EventBus的简介 EventBus的使用 一、初始化 二、向EventBus发送事件 三、接收事件 四、移除监听事件 ...这时就要用到 vue 中的事件总线 EventBus的概念 公.
  • 第一篇:什么是事件,其实事件并不难,我们每天用的js都是基于事件的,点击按钮后的一系列行为都是事件处理器。 第二篇:学好事件,先学学观察者模式,挖根源,在进入事件前我们先学习了“观察者模式”,...
  • 事情发生得到处理的操作,叫做事件,通俗的讲就是:事情来了,然后处理。 ​ 比如:手机铃声响了(事情来了)--------接电话(处理) ​ 当用户点击按钮的时候,我们会说触发了按钮的onclick事件 11.2 各种类型的...
  • 概念验证的以太坊dApp,用于发布社交活动和聚会。 在Rinkeby测试网上。 演示版 建筑 发展历程 启动testrpc客户端 npm run testrpc 监视编译客户端 cd client/ npm run watch 运行客户端服务器 cd client/ npm ...
  • 2.了解随机事件、交与互斥的含义,能结合实例进行随机事件、交运算;3.理解概率的性质,掌握随机事件概率的运算法则;4.会用频率估计概率.【知识梳理】1.样本点和样本空间随机试验的每一个可能的结果称为...
  • SimPy是一个离散事件模拟库。活动组件(如车辆、顾客或消息)的行为由进程(Processes)进行建模。...进程在生命周期中可以创造挂起(yield)事件(Events),等待事件的触发。 当进程生成事件时,该进...
  • 承诺的网络事件并fetch服务器数据 此存储库旨在说明如何使用NUI中存在的常规fetch API来查询服务器端数据。 这是一个使用TypeScript和网络事件周围的Promise包装器的解决方案。 注意:我可能会在某一时刻将Promise...
  • vue组件中的数据传递最最常见的就是父子组件之间的...这时就要用到 vue 中的事件总线 EventBus的概念EventBus的简介EventBus又称事件总线,相当于一个全局的仓库,任何组件都可以去这个仓库里获取事件,如图:Event...
  •  要弄清楚这个问题只要理解Android对事件处理的所谓消费(consume)概念即可,一个用户的操作会被传递到不同的View控件和同一个控件的不同监听方法处理,任何一个接收处理了该次事件的方法如果在处理完后返回了true...
  • 因为JavaScript具有自动垃圾回收机制,所以对于前端开发来说,内存空间不是一个经常被提及的概念,很容易被大家忽视。特别是很多不专业的朋友在进入到前端之后,会对内存空间的认知比较模糊。 在JS中,每一个数据...
  • 活动让你的代码,它周围的变化作出反应,在煎茶触摸是一个关键的概念。 触发事件时,一些有趣的事情发生在一个类。例如,当任何组件被渲染到屏幕上画事件被触发。我们可以侦听该事件通过配置一个简单...
  • 1、定义 如果你知道观察者模式,那么在...观察者模式:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知自动更新 相关基础 关键字:evnet 是C#中关键字的访问修饰...
  • 运算:交、、差 2.概率 定义 性质:非负、有限可加、单调、规范 3.古典概型:样本空间中样本点的个数有限,而且每个样本点发生的可能性相同 4.条件概率 5.概率乘法公式、全概率公式、贝叶斯公式 6.随机事件...
  • vue组件中的数据传递最最常见的就是父子组件之间的...这时就要用到 vue 中的事件总线 EventBus的概念EventBus的简介EventBus又称事件总线,相当于一个全局的仓库,任何组件都可以去这个仓库里获取事件,如图:Event...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,341
精华内容 1,736
关键字:

并事件概念