快速业务通道

Flash8播放器模型-弹性跑道

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-10


自从FutureSplash以来,就一直从事Flash方面的工作,对于Flash播放器的开发,我也有了自己的一些看法。
欢迎加入这个弹性极大的跑道模型的讨论。

我将Flash 播放器看作如一条跑道。跑道上有两个截然不同的部分,一个是处理ActionScript(它包括事件处理),一个是将内容表现到屏幕上。运行时,Flash播放器围绕着跑道按照SWF文件里指定的帧速前进。不管播放器被赋予什么样的指令,播放器都会尝试按预定的速度播放文件。指定的帧速即是跑道的最大速度,播放速度只能在此之下而不能超过这个限制值。
播放器跑道模型





SWF文件告诉播放器在规定的时间做相应的事。播放器处理ActionScript或者显现到屏幕或者两者同时发出的指令的时候,跑道就会被伸展。如果有许多的数据或者影片剪辑要处理,或者在跑道的单一环线中处理你添加的一切内容或指令,播放器会跳过要求它执行的那些指令,并会在最短的时间里完成一个循环,但不会比指定的帧速快。
ActionScript 繁重时



图形繁重时

ActionScript and 图形都繁重时

有混合这个模型的另外几个方面。首先,播放器会将图形元素构造到一个递减的目录树中。从基本的节点开始,有许多的以帧的内容和次级节点构成的分支。播放器每一个循环树目录上所有的元素都会被处理。当前的Flash 7播放器中,帧的内容按照需要从level0最高级开始依照从小到大的顺序被扫描和处理。根据图解表现关键是使树的层级与元素的内在需要一样的简单分明。树的菜单越少,层级越浅图形元素将会被更快速的显现到屏幕上。

树的结构同样也适用于对ActionScript 字节码的处理当中。在AS阶段,树的现状被将以字节代码形式被扫描出来。每一个指定的事件将被逐级执行处理。ActionScript基于栈的以栈为基础的,这样所有的字节代码被集中到堆栈上并被依照树的结构被线性处理。根据给出的帧上的代码和事件的容量,跑道上的AS部分将会被扩展。尽管没有一种固定的方法延迟代码的执行,播放器将会在每一个帧的循环中处理完被请求处理的所有内容。有趣的是,我们注意到那些使用功能和事件的代码能被排列成一个成的序列,等待着处理。在某种意义上,播放器从不会消损的,它会一直的做你所要求的所有工作,不会顺从于一个帧的循环。关键是不要在给出的帧上要求播放器处理太多的内容,并能对最新的帧依照逻辑和事件去处理。
至于Flash 8,从播放器的Beta版的外观来看,cacheAsBitma允许图形作为位图存储为一个MC的分支。矢量图会以位图的形式储存,但要等到图片改变了才会渲染。很好的允许播放器集中的存储于播放器的不同区域,专注于矢量存储怎样被利用。在一个基于树的表现模型里,树的一些分支被设置成branch.cacheAsBitmap=true 存储进程会在第一关创建一个位图并将重复利用这张位图直到本区域的矢量图标记为dirty 同样,如果每一帧位图存储分支都被标记为dirty,你不得不强制播放器在每一个帧循环中产生一张位图(处理+存储)。在我的测试当中,最优化利用cacheAsBitmap并不像看起来那样简单。
总之,Flash8播放器清晰的表明了它是两个不同元素的组合,图形处理和ActionScript 字节码处理。如果你滥用两者之中的一种或两种播放器的运行效率将会降低,导致下一个循环之前就认定一切已被完成。在更大的项目开发中,弹性跑道有助于帮助我们解释FlexFlash发展中所表现的良好性能优化背后的一些晦涩难懂的逻辑。
就像以前说过的许多次一样,“等那一帧” 关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号