egret-docs-master/Engine2D/event/principle/README.md

22 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Egret中的事件机制是一套业内标准的事件处理架构。所提供的事件模式也非常的清晰、强大和高效。
在Egret中事件模型定义了一套标准的生成和处理事件消息的方法使程序中的对象可以相互交互通信保持自身状态和相应变化。简单的说数据的提供者只管发出数据对象只要确保数据对象是 `egret.Event` 类或者子类的实例即可。这种数据对象 ,称为`事件Event`。数据对象的发出者,称之为事件`发送者Event dispatcher`。同时,接受事件的对象,称为 `事件侦听者Event listener)`
以下是一个简单的例子。
当我们想要和男(女)朋友约会的时候,通常都会有一个约会的发起者,同时还有个一个约会对象。那么这个邀请过程,就是一个典型的事件过程。
这个过程请见下图:
![](566143cb47133.png)
男朋友是事件`发送者`,邀请约会就是男朋友发送的`事件`。而女朋友就是`事件侦听器`。
这个事件,包含三条主要内容:事件的类型,事件的目标,事件的相关数据。事件的类型就是邀请约会,女朋友会 根据事件的不同,来执行不同的任务。比如,事件是“邀请约会”,那么女朋友可能会执行,梳妆打扮,然后赴约。如果事件 是“肚子饿了”,那么女朋友会执行买菜做饭。
事件的`目标`,就是事件的发送者。如果没有这个信息,那么女朋友接到事件后,就无法知道是谁要约她,或者是谁饿了。
事件的`数据`,就是事件所要包含的信息。上面的约会事件中,事件的信息可以包括事件,地点,干什么。同理,“肚子饿了”这个事件,要包含的信息是想吃些什么,在家里吃还是去外面吃等等。当然,也有一些事件是不包含信息的,例如“捶背”,事件 接受者只要收到这个事件,直接执行就可以了。
根据上面这个例子可以进一步了解Egret中的事件执行流程了。