2

AS3 でシンプルなオーディオ プレーヤーを作成しています。このオーディオ プレーヤーの複数のインスタンスを html に埋め込みたいのですが、1 つの再生中に他のインスタンスが一時停止します。LocalConnection を使用して、同じ swf の異なるインスタンス間で通信することは可能ですか? 私がテストできたことから、1 つのインスタンスで接続が確立されると、他のインスタンスはエラーをスローします...

私の他のオプションは、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でうまく動作します。

in chromereturn document[movieName];は undefined を返します。

に置き換えただけreturn document.getElementById(movieName)です。Chromeも動作するようになりました。

于 2011-05-05T11:17:51.227 に答える