Flex程序只有两帧,当第一帧的加载动作完成后,SystemManager通过nextFrame()函数把播放头置入并停在第二帧上。因为没有其他帧了,所以似乎ENTER_FRAME事件不应该再被发出了,但是Flex就是通过接收不断被发出的该事件达到响应用户动作,刷新画面的目的。
ENTER_FRAME事件为什么会被不断发出呢?
该事件是FlashPlayer自动发出的,对该事件的定义解释了这一切:
| enterFrame | 事件 |
事件对象类型:
属性 Event.type =
flash.events.Event
属性 Event.type =
flash.events.Event.ENTER_FRAME
| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
[播放事件] 播放头进入新帧时调度。如果播放头不移动,或者只有一帧,则会继续以帧速率调度此事件。此事件为广播事件,这意味着具有注册了此事件的侦听器的所有显示对象都会调度此事件。
Event.ENTER_FRAME 常量定义
enterFrame 事件对象的
type 属性值。
注意:此事件既不具有“捕获阶段”也不具有“冒泡阶段”,这意味着必须直接将事件侦听器添加到任何潜在的目标,而无论目标是否位于显示列表中。
本文解析了Flex程序中ENTER_FRAME事件的工作原理。即使在仅有一帧的情况下,该事件仍会以帧速率持续触发,确保应用程序能及时响应用户操作及更新界面。

3182

被折叠的 条评论
为什么被折叠?



