as2AVM1物件和as3物件的通訊

最美的回憶發表於2017-11-28

注意本人遇到的 connection名稱問題,因為實際上是域:名稱,呼叫時有時會找不到,因此在connection名稱前加_

更真實的原因是as1.0不支援connection,所以釋出時一定要看清楚哈,用flash player6不一定是as2.0!

具有不可預知域名的不同域。 有時候,可能希望具有接收方 LocalConnection 物件的 SWF 檔案在域之間具有更好的可移植性。 若不想在 send() 方法中指定域名,但要向 Flash Player 指出接收方和傳送方 LocalConnection 物件不在同一個域中,可在 connect() 和 send() 呼叫中的連線名之前加一個下劃線 (_)。 若要允許在這兩個不同域之間通訊,請呼叫 allowDomain() 方法並傳遞您希望允許 LocalConnection 呼叫的域。 或者,也可以傳遞萬用字元 (*) 引數來允許從所有域呼叫:

// receivingLC is in http://www.domain.com/receiving.swf
receivingLC.allowDomain(`*`);
receivingLC.connect(`_myConnection`);

// sendingLC is in http://www.anotherdomain.com/sending.swf
sendingLC.send(`_myConnection`, `myMethod`);

同一個域。 這是使用 LocalConnection 物件最簡單的情況,它只允許位於同一個域中的 LocalConnection 物件間通訊(預設情況下,Flash Player 允許同域通訊)。 當同一個域中的兩個 SWF 檔案通訊時,無需實施任何特殊的安全措施,而只需將 connectionName 引數的同一個值傳遞給 connect() 和 send() 方法。

// receivingLC is in http://www.domain.com/receiving.swf
receivingLC.connect(`myConnection`);

// sendingLC is in http://www.domain.com/sending.swf
// myMethod() is defined in sending.swf
sendingLC.send(`myConnection`, `myMethod`);

ActionScript 3.0 中建立的 LocalConnection 物件可以與 ActionScript 1.0 或 2.0 中建立的 LocalConnection 物件通訊。反之亦然:ActionScript 1.0 或 2.0 中建立的 LocalConnection 物件可以與 ActionScript 3.0 中建立的 LocalConnection 物件通訊。Flash Player 可自動處理不同版本 LocalConnection 物件間的通訊。

若要了解如何使用 LocalConnection 物件在兩個 檔案之間進行通訊,瞭解每個檔案中使用的命令非常有用。一個 檔案被稱為傳送方 檔案;此檔案包含要呼叫的方法。傳送方 檔案必須包含一個 LocalConnection 物件和對 send() 方法的呼叫。另一個 檔案被稱為接收方 檔案;此檔案為呼叫方法的檔案。接收方 檔案必須包含另一個 LocalConnection 物件和對 connect() 方法的呼叫。

send() 和 connect() 的使用將有所不同,這取決於 檔案是在同一個域中、在具有可預知域名的不同域中還是在具有不可預知域名(即動態域名)的不同域中。下文將說明這三種不同的情況,並針對每種情況分別提供程式碼示例。

同一個域。這是使用 LocalConnection 物件最簡單的情況,它只允許在位於同一個域中的 LocalConnection 物件間通訊,這是因為預設情況下,應用程式允許同域通訊。當同一個域中的兩個 檔案通訊時,無需實施任何特殊的安全措施,而只需將 connectionName 引數的同一個值傳遞給 connect() 和 send() 方法。

AS3的connect()方法已經沒有返回值了,那麼想在連線失敗的時候嘗試其它連線就只能通過捕獲ArgumentError。

varconn:LocalConnection=newLocalConnection();
varid:int=1;
while(true){
try{
conn.connect(String(id));
break;
}catch(e:ArgumentError){
id ;
}
}
本文轉自jiahuafu部落格園部落格,原文連結http://www.cnblogs.com/jiahuafu/archive/2009/10/30/1593006.html如需轉載請自行聯絡原作者

jiahuafu


相關文章