如何在成功加载Flash影片时捕获事件触发器?

时间:2009-01-10 12:55:34

标签: jquery flash embed swfobject preloader

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

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

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

有人对此有任何解决方案吗?我只是想知道这是否可行,因为我不想破解闪存并试图将'loader'添加到flash文件中。

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

4 个答案:

答案 0 :(得分:2)

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

但是,如果你使用swfObject动态添加一个嵌入式插件,浏览器将激活你的flash影片专用的onload(它对你的插件一无所知)。

请与http://blog.deconcept.com/swfobject/forum/discussion/271/javascript-onload-event-does-not-reflect-page-load-using-swfobject/进行类似的讨论。我最好的猜测是,如果不以某些方式修改原始swf,就无法做到你想要的。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

注意,如果你打算用图像或html东西来模糊flash,你需要wmode = transparent

答案 3 :(得分:0)

上面提到的使用window.load()的解决方案的问题是,如果你的主swf权重只有1 kb但它实际上没有显示任何东西(只是一个容器可以加载额外的内容,它是没用的,通常是flash文件中的情况。

我要做的是使用Actionscript的ExternalInterface类,它允许你的flash播放器与包含flash文件的html文件中提供的javascript函数进行通信。您可以让您的Flash文件调用一个javascript函数,该函数触发一个函数,告诉您的javascript处理脚本闪存已准备就绪。 对此有用的是,当javascript接管时,你可以获得所需的控制级别,而不是闪存文件中应该加载的内容。

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