|
| 1 | +Events 事件 |
| 2 | +================================== |
| 3 | +在Display引擎里面,所有 DisplayObject 派生的对象都是一个潜在的 EventDispatcher。(注意我们 |
| 4 | +为了节约代码不真的有EventDispatcher抽象层。) |
| 5 | + |
| 6 | +对于这些事件,Kagerou Engine有三种不同的对应策略,它们对于程序效率的影响都各不相同,所以此文档 |
| 7 | +将作为参考给开发者们选择不同的Event。简单说,Kagerou Engine有三种不同的事件播放体系。 |
| 8 | + |
| 9 | +### 常开放 (Always On) |
| 10 | +常开放的事件大多数是AS3中的广播事件和渲染事件。由于沙箱无法通过API咨询外部的渲染状况,渲染事件是 |
| 11 | +定时进行广播的。这些事件在一个DisplayObject被注册时就会开始进行广播,无论是否有监听器。这些事件 |
| 12 | +几乎全部都是由沙箱内部的定时器程序诱发的,所以多数一般都属于沙箱内事件(In-Sandbox Events)。 |
| 13 | +因为是沙箱内的广播,所以没有了传输协议可能带来的速度影响,但是因为是由总线派发的,所以这些事件卡住 |
| 14 | +有可能导致总线卡住。一般来说监听器都是轻松愉快的渲染。 |
| 15 | + |
| 16 | + |
| 17 | +### 常有效 (Always Available) |
| 18 | +常有效的事件大多数是由罕发的UI事件组成的,比如点击事件,播放启动暂停事件,加载完毕事件,窗口大小 |
| 19 | +变化事件,用户诱发的弹幕发送事件等。这些事件总会由外部传送回沙箱内部,因为其罕发性,所以通过量很低。 |
| 20 | +这些事件是效率最高的一种。 |
| 21 | + |
| 22 | + |
| 23 | +### 限制事件 (Limited Availability) |
| 24 | +限制事件大多数是由无法很便利的传输的事件组成的。比如鼠标位置事件,[根对象的添加事件](Root.md), |
| 25 | +弹幕播放器自发的更新事件。这些事件只有在绑定后才会传输,而且往往都是滞后传输来避免发送过多的Worker |
| 26 | +通讯而堵塞管道(Unclog the pipes!)。 |
| 27 | + |
| 28 | + |
| 29 | +用户事件(User Events) |
| 30 | +---------------------------------- |
| 31 | +用户事件是由用户操作诱发的事件。大多说情况下这些事件都相对比较罕见而稀疏(因为用户的操作并不频繁), |
| 32 | +大多数用户相关的事件都采取常有效的模式。 |
| 33 | + |
| 34 | +用户事件包括:键盘事件(KeyUp, KeyDown, KeyPress),点击事件(Click, DblClick),播放器 |
| 35 | +事件(PlayerStateChange)。 |
| 36 | + |
| 37 | +沙箱内事件(In Sandbox Events) |
| 38 | +---------------------------------- |
| 39 | +沙箱内事件是一些不需要沙箱外对象参与就可以实现的事件。其中有两种主要的事件:广播事件(Broadcast |
| 40 | +Events)和内部事件(Internal Events)。 |
| 41 | + |
| 42 | +广播事件诸如:enterFrame,render等。 |
| 43 | +内部事件诸如:added(不包括root的),removed等 |
| 44 | + |
| 45 | +状态事件(State Events) |
| 46 | +---------------------------------- |
| 47 | +状态事件是一些反映各种状态的事件。这些事件往往是降低频率接收的。 |
| 48 | + |
| 49 | +比如:mouseX, mouseY (在不邦定mouse相关操作时无法读取)。 |
0 commit comments