【问题标题】:How to capture an event trigger when a flash movie successfully loaded?如何在 Flash 电影成功加载时捕获事件触发器?
【发布时间】:2009-01-10 12:55:33
【问题描述】:

我目前正在使用 jQuery 以及 swfObject 将 swf 电影动态嵌入到我的网页中。

我目前在将 immem 的音乐播放器嵌入我的网页时遇到问题,因为他们的嵌入代码没有任何加载屏幕。因此,当我使用 swfObject 替换元素时,该区域通常为空白。在最坏的情况下,这意味着用户不会知道嵌入歌曲正在加载。

所以,我正在尝试找出在 Flash 加载后绑定事件的方法。因为我的计划是将带有巨大z-index 的图像放在顶部并使用此触发器隐藏图像。我想我尝试过使用$('#embed').load(function(){ ... });,但没有运气。

有人对此有任何解决方案吗?我只是想知道这是否可能,因为我不想对闪存进行黑客攻击并尝试将“加载程序”添加到闪存文件中。

更多注意事项:为了更清楚,我想将 imeem 的音乐播放器嵌入到我的网页中。所以,我真的无法控制 flash 文件,即我不能自己创建 flash 文件。

【问题讨论】:

    标签: jquery flash embed swfobject preloader


    【解决方案1】:

    通常最简单的做法是普通的 ol'<body onload="...",它会在调用处理程序之前等待您的外部资源完成加载。

    但是,如果您使用 swfObject 动态添加嵌入式插件,则浏览器将为您的 Flash 电影以外的主体触发 onload(它不知道您的插件的任何信息)。

    请参阅http://blog.deconcept.com/swfobject/forum/discussion/271/javascript-onload-event-does-not-reflect-page-load-using-swfobject/,了解与您的类似讨论。我的最佳猜测是,如果不以 some 方式修改原始 swf,您将无法为所欲为。

    【讨论】:

      【解决方案2】:

      您可以在 Flash 电影中执行此操作。但是,您将需要控制电影(您可能​​没有)。

      【讨论】:

      • 是的,我无法控制 flash 文件,因为它是 immem 的嵌入文件。
      【解决方案3】:

      请注意,如果您打算用图像或 html 内容来掩盖 flash,则需要 wmode=transparent

      【讨论】:

        【解决方案4】:

        上面提到的使用 window.load() 的解决方案的问题是,如果您的主 swf 仅重 1 kb 但它实际上不显示任何内容(只是一个加载额外内容的容器,这在 Flash 文件中经常出现这种情况。

        我要做的是使用 Actionscript 的 ExternalInterface 类,它允许您的 flash 播放器与包含 flash 文件的 html 文件中可用的 javascript 函数进行通信。您可以让您的 flash 文件调用一个 javascript 函数,该函数触发一个函数,告诉您的 javascript 处理脚本 flash 已准备好。 这样做的好处是,当 javascript 接管时,您可以准确控制应该在 flash 文件中加载的内容。

        有关使用 ExternalInterface 的更多信息,请参阅此内容:http://blog.circlecube.com/2008/02/01/actionscript-javascript-communication/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-06
          • 1970-01-01
          • 2011-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多