我在AS3中構建了一個簡單的音頻播放器。我想將這個音頻播放器的多個實例嵌入到我的html中,並且在播放時,其他人會暫停。是否可以使用LocalConnection在同一個swf的不同實例之間進行通信?從我可以測試,一旦連接一個實例所做的,別人拋出一個錯誤...同一個SWF的不同實例之間的LocalConnection?
我的另一種選擇是使用JavaScript。任何其他想法?
我在AS3中構建了一個簡單的音頻播放器。我想將這個音頻播放器的多個實例嵌入到我的html中,並且在播放時,其他人會暫停。是否可以使用LocalConnection在同一個swf的不同實例之間進行通信?從我可以測試,一旦連接一個實例所做的,別人拋出一個錯誤...同一個SWF的不同實例之間的LocalConnection?
我的另一種選擇是使用JavaScript。任何其他想法?
對於所有感興趣的人,這裏是我的簡單實現。
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);
它在IE,FF工作不錯。
in chrome return document[movieName];
returns undefined。
我剛換成return document.getElementById(movieName)
。現在也適用於Chrome。
說實話,不是。本地連接非常像一個對講機。我認爲外部接口/ JavaScript是前進的方向,儘管它可能是一個初始設置的b ****。祝你好運! – 2009-08-21 20:18:42
這就是我的想法。謝謝! – subb 2009-08-21 20:25:14