代码之家  ›  专栏  ›  技术社区  ›  Lorenzo B

了解flex应用程序和框架

  •  1
  • Lorenzo B  · 技术社区  · 15 年前

    在好奇心的驱使下,我试图理解flex应用程序使用的生命周期。

    因此,我对这个论点做了一些研究;FlashPlayer中使用的两个关键概念是:

    • SWF帧:它是包含图形代码和AS代码的逻辑单元。
    • flash player frame:它是flash runtime用来更新屏幕的时间间隔,由framerate属性定义。

    如果是这样,你能解释一下这两个概念之间的关系吗?尤其是,它们是否成对?

    主要规则是:flash播放器在swf中流;在读取完整的swf帧之前,flash播放器不能渲染它。

    我会尽力解释我需要理解的东西。为了简单起见,假设您有一个两帧的应用程序:swf fr 1和swf fr 2。

    通常(例如在CS4中),框架被视为逻辑单元(由showframe标记分隔),您可以在其中附加AS3代码。我认为这是SWF文件的简化版本:

    • header//此处定义了帧速率
    • 符号、类别等,这是fr1 ===显示框===
    • 符号、类别等,这是fr2 ===显示框=== 终点

    如果有两个帧,fr1和fr2,flash将开始执行fr1并转到下一个帧(fr2)。如果您不停止执行,播放器将通过无限循环执行并呈现包含在fr1和fr2中的代码。相反,当您停止执行时,例如在fr2中,flash播放器循环执行fr2中包含的代码。

    那么,每个SWF帧是否可以多次发生Flash播放器帧?

    当fr1正在下载(fr1未完全加载)时,是否有任何Enterframe事件?FR1完全加载时是否发生第一个frameEvent?FR1在哪段时间内呈现? 另一种情况是,如果您已经将stop命令调用到fr1中,您将以指定的速率(当前帧为fr1)获得enterframe。同时,fr2正在下载。完成后,进入下一帧(fr2)。FR2在哪段时间内呈现?Flash播放器是否尝试将fr2渲染到其下一个时间间隔?

    考虑到这个简单的顺序:

    1. FR1正在下载
    2. FR1已完全下载
    3. fr1调用stop()方法,同时fr2正在下载
    4. FR2已完全下载
    5. 转到FR2
    6. fr2调用stop()方法
    7. 等等。

    当flash player enterframe事件发生时,你能给我下划线吗?

    谢谢你抽出时间。顺祝商祺,flex沉迷其中。

    1 回复  |  直到 15 年前
        1
  •  0
  •   jonbcampos    15 年前

    虽然看起来你确实在调查一些事情,但是你的一些假设是错误的。 flex是写在一个漂亮框架中的flash代码。所以一切都归结为框架,框架是代码执行和代码执行、呈现结果的混合体。当所有必需的代码都已执行并且渲染过程完成时,帧就完成了,Flash播放器将移动到下一帧。

    所以你的输入框被称为。

    现在,作为一个flex开发人员,监听enterframe事件并不典型。

    要理解flex应用程序,您只需要认为它们是flash应用程序,第一个框架是加载框架,第二个框架是应用程序。正是子部分和它们各自的时间线构成了其余的框架。这个概念肯定会让人困惑,因为他们相信Enterframe只应该被调用两次,事实并非如此。

    下一个错误的假设是,仅仅因为“没有代码在执行”,框架仍然没有被调用。但事实并非如此。仅仅因为某些东西没有改变并不意味着帧不会被调用,而且没有适当的检查,大量的处理不会发生。

    高温高压