出于好奇,我试图了解 Flex 应用程序使用的生命周期。
所以,我对这个论点做了一些研究;FlashPlayer 中使用的两个关键概念是:
- SWF Frame:它是包含图形代码和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 === End
如果您有两个帧,FR1 和 FR2,Flash 开始执行 FR1 并转到下一个 (FR2)。如果您不停止执行,Player 将通过无限循环执行并渲染包含在 FR1 和 FR2 中的代码。相反,当您停止执行时,例如在 FR2 中,flash 播放器会循环执行 FR2 中包含的代码。
那么,每个 SWF 帧可以多次播放 Flash Player 帧吗?
当 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。