(未解决)Enter_Frame和Render事件是发生在一帧的头和尾吗?

[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的跑道模型发生了变化?还是实验设计的不合理?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值