【发布时间】:2009-12-14 22:53:11
【问题描述】:
出于好奇,我试图了解 Flex 应用程序使用的生命周期。
所以,我对这个论点做了一些研究; FlashPlayer 中使用的两个关键概念是:
- SWF框架:是包含图形代码和as代码的逻辑单元
- Flash Player Frame:Flash运行时更新屏幕的时间间隔,由frameRate属性定义
如果是这样,你能解释一下这两个概念之间的关系吗?特别是,它们是否配对在一起?
主要规则是:Flash Player 在 swf 中流式传输;在读取完整的 SWF 帧之前,Flash Player 无法呈现它。
我将尝试解释我需要理解的内容。为简单起见,假设您有一个两帧应用程序:SWF FR 1 和 SWF FR 2。
通常(例如在 CS4 中)框架被视为一个逻辑单元(由 ShowFrame 标记分隔),您可以在其中附加 as3 代码。我认为这是 swf 文件的简化版本:
- Header // 这里定义了 frameRate
- 符号、类等… // 这是 FR1 === ShowFrame ===
- 符号、类等… // 这是 FR2 === ShowFrame === 结束
如果您有两个帧,FR1 和 FR2,Flash 开始执行 FR1 并转到下一个 (FR2)。如果您不停止执行,播放器将通过无限循环执行并渲染包含在 FR1 和 FR2 中的代码。相反,当您停止执行时,例如在 FR2 中,flash 播放器会循环执行 FR2 中包含的代码。
那么,Flash Player 帧是否可以在每个 SWF 帧中出现多次?
FR1 正在下载时(FR1 未完全加载)是否有任何 enterFrame 事件?第一个 frameEvent 是否在 FR1 完全加载时发生? FR1 在什么时间段内渲染? 另一种情况,如果您已将停止命令调用到 FR1 中,您将以您指定的速率获得 enterFrame(当前帧为 FR1)。同时FR2正在下载。完成后,您转到下一帧 (FR2)。 FR2 在什么时间段内渲染? Flash Player 是否尝试将 FR2 渲染到其下一个时间间隔?
考虑这个简单的序列:
- FR1 正在下载
- FR1 已完全下载
- FR1调用stop()方法,同时FR2正在下载
- FR2 已完全下载
- 转到 FR2
- FR2 调用 stop() 方法
- 等等
当 Flash Player enterFrame 事件发生时,您能帮我强调一下吗?
感谢您的宝贵时间。最好的问候,Flex_Addicted。
【问题讨论】:
标签: apache-flex frame lifecycle frame-rate