Flash渲染机制.pdfVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Flash渲染机制.pdf

flash 渲染机制 理解执行模型 执行模型是指 Flash Player 在每一个帧周期中如何执行相应的指令操作。Flash Player后台事 实上运行着 n多线程,只是 AS并没有给开发人员提供多线程编程模型。这意味着从概念上 来讲我们要把 Flash Player 看做是单线程运行实体,有关这一单线程编程模型的优势/劣势的 争论从未休止过,我不想对这一具有争议性的问题做过多评论,但请大家记住这一事实。 可变跑道(Elastic Racetrack) 可变跑道是 Flash Player 的帧执行模型,这个模型描述了在一帧的处理周期中,代码执行和 帧渲染的工作是怎样彼此平衡的。Flash Player 9和AVM2 对这一模型进行了一些改进,这 一信息是基于对事件机制和渲染模型的研究总结出来的,完整的模型尚未被官方公布。 基本的跑道理论没有发生改变,在 Flash Player执行一帧的周期里,前一部分时间用于执行 代码,剩余时间用于渲染显示列表中的对象。每个执行阶段都可以根据实际需求增加执行时 间来执行更多代码或做更多的渲染工作,而跑道的总长度也将相应增长。 在前一模型基础上发生改变的是每一阶段在一个微观周期里的样子以及他们怎样形成一帧。 AVM2是由 Flash Player 中一个叫做 Marshal的元帅级组件所操控,Marshal负责将时间切割 成 Flash Player 工作所依的基本时间片,在这里我希望澄清一下 Flash Player 的时间片跟 swf 文件运行时的帧速率没有任何关系,我们将最终看到 Flash Player 是如何将这些时间片合成 为一帧。在 Mac OS版 Firefox中执行一个由 Flex 编译得来的 swf文件,Marshal通常会将时 间切割成 19-20毫秒的时间片,时间片大小根据平台和浏览器的不同而存在差异.为方便我们 接下来的讨论,我们假定时间片大小为 20毫秒,也就是说 Marshal每秒钟会产生不超过 50个 时间片,每个时间片中,五步可能的操作按如下顺序执行: Player事件调度 – 比如 Timer事件,鼠标事件,ENTER_FRAME 事件,URLLoader 事件等 等。 用户代码执行 – 所有侦听上一步相应事件的代码被执行。 RENDER事件调度 – 在用户代码执行期间调用 stage.invalidate()会触发这一特殊事件。 最后的用户代码执行 – 侦听上述第三步特殊事件的用户代码此时被执行。 Player更改显示列表。 Marshal如此反复的执行 20毫秒时间片并在运行中决定下一步操作。一个时间片中执行的所 有这些操作最终归纳为上述两段式跑道(代码执行,图像渲染)也就是我们所说的一帧。用户 代码和失效操作填充在代码执行区,渲染操作填充在跑道的渲染区段。需要指出的是相关操 作只能在 Marshal预定的时间内发生,如果你的用户代码很短,那么 Marshal仍然会在执行 完用户代码后等待一段时间然后进入渲染阶段。 为了更好阐述哪些 action被如何执行以及可变跑道如何被创建,请参考如下示例,分别描述 了以 5fps, 25fps和 50fps帧速率工作的 swf中时间片是如何被处理的。 以上示例可以看出,不同的帧速率下,一个帧周期中的可变跑道会执行不同操作,例如对于 5fps的 swf,每帧处理 10个用户 action,1个失效 action,1个渲染 action;帧速率 25fps的 swf,每帧处理 2个用户 action,1个失效 action,1个渲染 action;对于 50fps的 swf,每帧 只能处理 1个用户 action,1个失效 action,1个渲染 action。需要指出的很重要的一点是, 某些事件只可能能发生在某些特定的时间片里,比如,Event.ENTER_FRAME 事件只能在某 一帧的初始时间片中被调度。 一个时间片中代码部分和渲染部分都有可能过长而导致相应时间片大于 20毫秒,这就是” 可变”的含义,为了保证帧的播放速率仍然接近 swf编译时设定的帧率,Marshal会选择丢掉 一些时间片。 swf文件的播放速率不可能超过当前 Flash Player 切割时间片的速率,你可以为 swf文件设 定 120fps的播放速率,但 Flash最多可以按照 50帧的速度播放(具体数值取决于当前系统的 设置)。 代码的执行频率可能比 swf的帧率更高,播放一个 1fps的 swf文件,播放一帧时间为 1秒, 也就是 50个时间片,但在每个时间片里,都会有触发鼠标或计时器事件,尽管只有最后一 个时间片才会渲染,另外你可以选择通过调用函数 updateAfterEvent() 提前渲染,但只能在 鼠标,计时器和键盘事件

文档评论(0)

tangtianxu1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档