(未解决)Enter_Frame和Render事件是发生在一帧的头和尾吗?
2012-12-03 18:25
357 查看
[SWF] C:\Users\Administrator\Adobe Flash Builder 4.6\testAS\bin-debug\testAS.swf - 解压缩后为 1,639 个字节 onEnterFrame=32 632 onRender=32 635 onEnterFrame=33 339 onRender=33 341 onEnterFrame=34 339 onRender=34 341 onEnterFrame=35 337 onRender=35 339 onEnterFrame=36 338 onRender=36 340
根据FlashPlayer的“可变跑道”之说,Enter_Frame事件发生在一帧开始,而Enter.Render发生在一帧的结束。
关于“可变跑道”,请参考:http://blogs.adobe.com/xwlin/2010/04/flash_player_101_-_adobe_max_2009_1.html
这种说法是在FlashPlayer9的时候提出的,时至今天的FlashPlayer11,还仍然如此吗?
下面的实验尝试验证这一说法,但是结果很奇怪,似乎这两个事件是连续发生的,中间没有间隔。
请看如下实验:
package { import flash.display.Sprite; import flash.events.Event; public class testAS extends Sprite { private var startW:int = 10; public function testAS() { //设置帧频为1秒1帧 this.stage.frameRate = 1; //监听ENTER_FRAME和RENDER事件 this.addEventListener(Event.ENTER_FRAME,onEnterFrame); this.addEventListener(Event.RENDER,onRender); } public function onEnterFrame(e:Event):void { //为了触发Event.RENDER事件,而修改画面外观 this.graphics.clear(); this.graphics.lineStyle(1,0x998877); this.graphics.drawRect(10,10,startW,20); this.stage.invalidate(); startW += 5; //记录时刻 var now:Date = new Date(); trace("onEnterFrame=" + now.seconds + " " + now.milliseconds); } public function onRender(e:Event):void { //记录时刻 var now:Date = new Date(); trace("onRender=" + now.seconds + " " + now.milliseconds + "\n"); } } }
在FlashBuilder中Debug,执行结果如下:
通过onEnterFrame的时间间隔,可以看出,帧频的确是1秒。
按照“可变跑道”之说,onEnterFrame应该发生在一帧的开始,而onRender发生在一帧的结束。在本实验中,两者的时间差应该是1秒左右。
但是实验结果表明,两者的时间差仅为2-4毫秒。
猜测:
难道FlashPlayer的跑道模型发生了变化?还是实验设计的不合理?
相关文章推荐
- Flex程序只有两帧,为什么ENTER_FRAME事件不断发生
- 【ActionScript】ENTER_FRAME事件与组件的旋转
- flex的enter_frame事件详解
- Flash 平台技术的优化(六) 计时器与 ENTER_FRAME 事件
- Actionscript Flash Event.ENTER_FRAME 延迟间隔非常大 并且 pre-render 耗时非常严重
- flex的enter_frame事件详解
- 对于ENTER_FRAME事件的清除处理
- ENTER_FRAME事件简单控制往返运动
- ENTER_FRAME事件做进度条
- 机房突然发生爆炸事件如何处理?为什么会这样
- jquery实现按Enter键触发事件示例
- QT 文件拖放事件dropEvent和dragEnterEvent
- JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
- js 中 this 用作“指代发生事件的源对象”时的适用范围
- addEventListenter和attachEvent事件兼容代码
- 2015年Q1成都互联网产业发生投融资事件35起,累计金额约1亿元
- 防止同时多次触摸事件的发生
- 移动端 touchmove高频事件与requestAnimationFrame的结合优化
- 在文本框textbox1中按回车键Enter,触发按钮button1的单击事件click()
- js禁止enter回车事件方法