2

我正在 AS3 中构建一个简单的音频播放器。我想在我的 html 中嵌入这个音频播放器的多个实例,当一个人正在播放时,其他人会暂停。是否可以使用 LocalConnection 在同一 swf 的不同实例之间进行通信?根据我的测试,一旦与一个实例建立连接,其他实例就会抛出错误......

我的另一个选择是使用 javascript。还有其他想法吗?

4

2 回答 2

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);
于 2009-08-21T20:57:27.780 回答
1

它在 IE、FF 中运行良好。

在 chrome 中return document[movieName];返回未定义。

我刚刚替换为return document.getElementById(movieName). 现在也可以使用 Chrome。

于 2011-05-05T11:17:51.227 回答