2009-08-21 48 views
2

我在AS3中構建了一個簡單的音頻播放器。我想將這個音頻播放器的多個實例嵌入到我的html中,並且在播放時,其他人會暫停。是否可以使用LocalConnection在同一個swf的不同實例之間進行通信?從我可以測試,一旦連接一個實例所做的,別人拋出一個錯誤...同一個SWF的不同實例之間的LocalConnection?

我的另一種選擇是使用JavaScript。任何其他想法?

+0

說實話,不是。本地連接非常像一個對講機。我認爲外部接口/ JavaScript是前進的方向,儘管它可能是一個初始設置的b ****。祝你好運! – 2009-08-21 20:18:42

+0

這就是我的想法。謝謝! – subb 2009-08-21 20:25:14

回答

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

它在IE,FF工作不錯。

in chrome return document[movieName]; returns undefined。

我剛換成return document.getElementById(movieName)。現在也適用於Chrome。

相關問題