基本上我创建了一个简单的mp3播放器,并且页面中嵌入了多个副本。现在,当我玩一个,我希望所有其他人暂停.....任何想法如何做到这一点?可以进行n路局部连接吗?还是有更好的选择?
答案 0 :(得分:1)
更完整的解决方案将使用LocalSharedObject:http://www.adobe.com/products/flashplayer/articles/lso/
启动时,swf生成一个GUID,然后加载LSO并绑定到该LSO上的属性(如'currentActiveGuid')。然后,每当用户点击播放时,swf将其guid写入LSO。这将通知你所有swfs音乐正在播放,不需要javascript。这也适用于标签,所以如果swf正在另一个标签上播放,它将停止(此外,谷歌和Chrome使用相同的LSO,因此它可以跨浏览器工作:-))
答案 1 :(得分:0)
您可以使用javascript与网页进行通信,然后网页可以与其他swf进行通信。
答案 2 :(得分:0)
ExternalInterface.call可用于从 SWF调用JavaScript ,反之亦然,ExternalInterface.addCallback可用于公开某些方法通过 JavaScript
例如,在每个SWF中,您可能有:
ExternalInterface.addCallback("externalStopAudio", stopAudio);
// later..
function stopAudio():void {
// Code to stop audio
_audioStream.stop();
}
function playAudio():void {
// tell JS to stop all audio
ExternalInterface.call("stopAllAudio");
// play this players audio
_audioStream.play();
}
然后在JS中,它是包含SWF的HTML的一部分:
<script>
// these references need to be actual pointers to the SWFs, this will vary
// depending on how you have it setup - might be SWFObject, Jquery, etc
var a = [swf1, swf2, swf3];
// called by SWF
function stopAllAudio() {
// called to SWF
for(var i = 0; i < a.length; i++) {
a[i].externalStopAudio();
}
}
</script>
根据安全设置/域名的位置,您可能需要以下内容:
在HTML中:
<param name="allowScriptAccess" value="always" />
在SWF中:
flash.system.Security.allowDomain(sourceDomain)