LocalConnection между разными экземплярами одного и того же SWF?

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

Мой другой вариант - использовать javascript. Любые другие идеи?


person subb    schedule 21.08.2009    source источник
comment
Честно говоря, нет. Local Connection работает почти так же, как рация. Я думаю, что внешний интерфейс / javascript — это путь вперед, хотя поначалу это может быть чертовски сложно настроить. удачи!   -  person George Profenza    schedule 22.08.2009
comment
Вот что я подумал. Спасибо!   -  person subb    schedule 22.08.2009


Ответы (2)


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

Код 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);
person subb    schedule 21.08.2009

Он хорошо работает в IE, FF.

в chrome return document[movieName]; возвращает значение undefined.

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

person palPalani    schedule 05.05.2011