LocalConnection между разными экземплярами одного SWF? - PullRequest
2 голосов
/ 21 августа 2009

Я создаю простой аудиоплеер в AS3. Я хотел бы встроить несколько экземпляров этого аудиоплеера в мой HTML, и когда кто-то играет, другие приостанавливаются. Можно ли использовать LocalConnection для связи между различными экземплярами одного SWF? Из того, что я мог проверить, как только соединение установлено с одним экземпляром, другие выдают ошибку ...

Мой другой вариант - использовать JavaScript. Есть другие идеи?

Ответы [ 2 ]

4 голосов
/ 22 августа 2009

Для всех, вот моя простая реализация.

Код 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 голос
/ 05 мая 2011

Хорошо работает в IE, FF.

в хроме return document[movieName]; возвращает неопределенное значение.

я только что заменил на return document.getElementById(movieName). теперь работает и Chrome.

...