我正在AS3中构建一个简单的音频播放器。我想在我的html中嵌入这个音频播放器的多个实例,当一个人正在播放时,其他人暂停了。是否可以使用LocalConnection在同一个swf的不同实例之间进行通信?根据我的测试,一旦与一个实例建立连接,其他实例就会抛出错误...
我的另一个选择是使用javascript。还有其他想法吗?
答案 0 :(得分:4)
对于每个感兴趣的人,这是我的简单实现。
Javascript代码
//keep a reference to every player in the page
players = [];
//called by every player
function register(id)
{
players.push(id);
}
//stop every player except the one sending the call
function stopOthers(from_id)
{
for(var i = 0; i < players.length; i++)
{
var id = players[i];
if(id != from_id)
{
//setEnabled is a callback defined in AS3
thisMovie(id).setEnabled(false);
}
}
}
//utility function to retreive the right player
function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
AS3代码
if(ExternalInterface.available)
{
ExternalInterface.addCallback("setEnabled", setEnabled);
ExternalInterface.call("register", ExternalInterface.objectID);
}
function setEnabled(value:Boolean):void
{
//do something
}
//when I want to stop other players
if(ExternalInterface.available)
ExternalInterface.call("stopOthers", ExternalInterface.objectID);
答案 1 :(得分:1)
在IE,FF中效果很好。
chromereturn document[movieName];
中的返回undefined。
我刚刚用return document.getElementById(movieName)
替换。现在也可以使用Chrome。