[转]跳桢

本文探讨了FlashPlayer10对跳帧机制的改进,解决了FlashPlayer9中存在的异步跳帧问题,并讨论了这些变化对代码执行的影响。通过对比两个版本的差异,展示了这些改进如何帮助开发者更高效地进行编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url]http://sban.biz/386[/url]

Flash Player 10更改了9的异步跳桢机制,这比开发者带来极大方便,利用这个改进,或许可以在AS3中实现阻塞编程。
1,Flash Player 9中的跳桢问题

Flash Player 9应当退出历史舞台了,余不待说,仅是异步跳桢这一个理由便充分了。在Flash Player 9中,以下代码将返回null:
// go to a specific frame where myDisplayObject is located
container.gotoAndStop ( 25 );
// output : null
trace( container.myDisplayObject );//该对象位于第25桢中
而在Flash Player 10中,它却可以返回实例。
2,另一个Flash Player 9的关于gotoAndStop的bug

设主场景中有一mc,此mc中有两桢,第二桢代码为:
trace(2)
主场景第一桢代码为:
mc.gotoAndStop(2);
毫无疑问,输出应该是:
2
然而实际却是:
2

2
这是Flash Player 9的一个bug,在Flash Player 10中不存在这个问题。
3,Flash Player 9与10的跳桢区别

Flash Player 9的跳桢是异步的,而10的跳桢却是同步的。
当gotoAndStop发生时:

[list]
[*]Flash Player 9 [*]Flash Player 10
[*]对比桢差异,移除所有非动态添加的、在新桢中不存在的对象,移动播放头 [*]对比桢差异,移除所有非动态添加的、在新桢中不存在的对象 [*]非动态:非代码添加
[*]执行gotoAndStop之后代码 [*]添加静态对象,执行桢代码,移动播放头
[*]… [*]执行gotoAndStop之后代码
[*] 在一代代码执行周期中,在enterFrame事件监听中,添加静态对象,执行桢代码 [*]
[/list]


4,Flash Player如何比对静态对象是否相同

1) 如果静态对象在新桢中没有新的关键桢,则一定保留
2) 如果静态对象在新桢中有新的关键桢,但该对象未与任何类关联,则保留,否则移除
5,两个版本跳桢的不同对桢周期的影响

在Flash Player一个完整的桢周期中,共做两件事情:执行代码与渲染,又细分为五小步:
1) Player事件调度 – 比如Timer事件,鼠标事件,ENTER_FRAME事件,URLLoader事件等等。

2) 用户代码执行 – 所有侦听上一步相应事件的代码被执行。
3) RENDER事件调度 – 在用户代码执行期间调用stage.invalidate()会触发这一特殊事件。
4) 最后的用户代码执行 – 侦听上述第三步特殊事件的用户代码此时被执行。
5) Player更改显示列表。
在第2小步时,在Flash Player 9中,包括执行桢代码,这是由对enterFrame监听引起的;而在Flash Player 10中,同样的桢代码是在第1小步内执行完成的。Flash Player 10对跳桢的改进有利于减少桢周期中代码执行的环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值