【问题标题】:Flash does not receive resize eventFlash 没有收到调整大小事件
【发布时间】:2011-05-31 17:37:20
【问题描述】:

在 div 中,我们使用 swfobject 嵌入 Flash 播放器。我们在动作脚本中编写了 Flash 播放器。在网页的初始化过程中,我们使用 javascript 来调整 div 的大小以使播放器最适合浏览器。随附的 Flash 播放器注册了 OnResize 事件侦听器和处理程序。问题是当封闭 div 调整大小时不会调用 OnResize 事件。 (之后我们拖动以调整浏览器的大小时,确实会调用 OnResize 事件。)这可能是由于在调整 div 的大小时 Flash VM 没有完全准备好造成的吗?在这种情况下确保调用 OnResize 事件的最佳方法是什么?

谢谢。

【问题讨论】:

    标签: javascript flash resize


    【解决方案1】:

    要确定事件是否按您期望的顺序触发,请将它们全部记录到您的 JS 控制台。使用带有 Firebug/Chrome Dev 的 console.log 从 JS 记录 DIV 调整大小,并使用围绕同一 console.log 的 ExternalInterface 包装器记录 Flash 事件触发。

    在 Flash 中,onAddedToStage 将在您的 Flash 准备就绪时触发。我通常在onAddedToStage 处理程序中手动触发onResize,以防在Flash 准备好之前调整窗口大小。如果您确保使用 ExternalInterface 将 onAddedToStage 发布到 JS,您还可以让您的 JS 调整大小处理程序推迟在 Flash 上触发 onResize 直到触发 onAddedToStage

    【讨论】:

    • 谢谢,伊恩。我也看到了这个帖子:stackoverflow.com/questions/4771379/…。那么首先发生什么事件,ExternalInterface 的 ready 和 onAddedToStage?谢谢。
    • 你的意思是ExternalInterface.available?根据文档,我认为没有“准备好外部接口”。 available 的问题是你必须轮询它。此外,available 为真,在我的实验中,仅表明 ADDED_TO_STAGE 已触发,前提是在舞台设置中初始化 ExternalInterface。
    • 抱歉回复晚了。我尝试使用 AdditionalToStage 事件,但不知何故它不起作用。真奇怪。也许是因为我不在要添加到舞台的对象的控制器中。我所拥有的是我正在整合良好的广告感广告。我创建了一个 AdsLoader 将其添加到舞台,但不知何故未调用 AdditionalToStage 处理程序。我很好,因为我结束了不依赖这个事件。
    猜你喜欢
    • 2021-10-28
    • 2012-08-12
    • 2014-04-15
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多