在第一个Flash视频结束后播放第二个视频

4

我有一个按照标准格式设置的Flash对象:

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("swfplayer.swf", "myContent", "300", "120", "9", "expressInstall.swf");
</script>

但是我希望在第一个视频结束时,在Web页面的另一个部分开始播放第二个Flash视频。是否有某种监听器可以使用?

谢谢。


Flash电影中是否有实际的视频?Flash电影总是播放相同长度的时间吗? - Zevan
是的,有一个FLV视频,长度是固定的。 - kingsley
3个回答

2
实际上,只要你的电影是基于时间轴的,就有一种方法可以实现这个功能。通过JavaScript调用Flash对象的一些函数,可以返回值并检查它们,以确定电影是否已经完成。
要获取电影的当前帧,请使用以下代码:
document.getElementById("myFlashObject").TCurrentFrame("_root");

要检查电影是否正在播放,请使用:

document.getElementById("myFlashObject").IsPlaying()

如果使用“stop()”方法停止电影在某一帧上,这将返回false。还有很多其他方法可以用来播放其他电影,你可能会发现它们很有用。以下是Adobe参考文档的链接:http://www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html
注意:我测试了这个方法,并且在Firefox中的Flash Player 10中工作正常。您可能需要仔细检查这些方法的跨浏览器兼容性。

1
你可以从这两个可能性入手:LocalConnectionExternalInterface
我个人会选择ExternalInterface。通过它,你可以设置一个JavaScript函数,当videoPlayer_1的视频结束时它会接收到一个调用。你可以将ID传递给这个JavaScript函数来确定哪个播放器已经完成,然后向适当的下一个播放器发送回调以告诉它开始播放。你可以重复此过程多次,直到有/swf的视频为止。
我本来想包含一个示例,但你没有提到as2还是as3。
至于LocalConnection,你可以创建一个带有本地数据连接的电影组,但这很容易被多个浏览器/swf的某些情况破坏,所以可能不是最可靠的方法。但如果你想尝试一下,请查阅Grant Skinner的SwfBridge类,以使事情变得更加容易。

我该如何在JavaScript中实现这个? - kingsley
仅使用JavaScript?您无法访问.fla文件吗? - Ribs
我会,但我不精通ActionScript,想知道是否可以用JavaScript完成。 - kingsley
好的,这就是我有礼貌地退出的地方。如果您需要尝试ExternalInterface路线,我可以帮助处理其中涉及的ActionScript和简单JS。 - Ribs
@kingsley 我同意Ribs的观点,我认为你最好的方法是修改AS代码,使用ExternalInterface的静态方法来调用javascript,然后在javascript中再次调用次要swf文件的方法,同样需要使用ExternalInterface的适当静态方法进行修改。如果你有两个swf文件的源代码,为了使其正常工作,所需的修改不会涉及太多AS代码,所以不必担心。 - shaunhusain


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接