我認爲我發現了LocalConnection
通信設置的閃存錯誤,如此處所述。下面的網站是不是我的,我只是用它來表明該問題也發生在其他網站:as3當網站在2個瀏覽器窗口中打開時,LocalConnection通信停止工作
如何重現:
http://fcontheweb.com/articles/localconnection/
如果您在2打開網站瀏覽器窗口,找到在2個as3組件之間發送消息的as3示例。
單擊第一個瀏覽器窗口中的按鈕:它將與消息框進行本地通信。如果您然後按下第二個瀏覽器窗口上的按鈕,則不會發生任何事情。如果關閉第一個瀏覽器窗口,則必須在開始爲第二個窗口工作之前刷新頁面。
我認爲這是因爲兩個窗口中的as3對象的名稱空間在瀏覽器的Flash播放器插件中重疊,並且通信通道鏈接正在被覆蓋。
您可以通過再次打開2個窗口來輕鬆驗證我的假設,但現在先按下LAST窗口中的按鈕。這個窗口中沒有任何事情會發生,但消息會顯示在第一個窗口中!不知何故,最後一頁的接收器不會被創建,因爲該名稱的接收器已經存在於Flash插件的對象存儲中。
你能證實這一點,更有趣的是,有沒有人有這方面的解決方法?是否有可能檢測一個swf的實例在本地運行並將其用於連接名稱?
編輯:觀察到的行爲不是錯誤,但預期的行爲。然而,我的問題仍然存在:如何讓頁面在同一個瀏覽器窗口中使用LocalConnection
獨立於同一系統上不同瀏覽器窗口中的相同頁面進行通信。
好的,這是設計。如何使用SharedObject來計算** live **實例的數量(不僅僅是打開的總數)並不是很明顯。我可以爲同一瀏覽器中的所有頁面生成並傳遞GUID(例如:http://snipplr.com/view/45247/as3-globally-unique-identifier-guid/),以用作LocalConnection名稱,如果那是你的建議? – StarShine
@StarShine我不知道你想要用LocalConnection來做什麼,但是你可以使用'SharedObject'來計算你的swf實例,並且確保當它們中的任何一個創建了一個唯一的新連接時: 'swf1:con1,swf2:con2,...,swf_n:con_n' ... – akmozo
嗯,那不是我真正需要的。 (我認爲)相反,我希望swf1在瀏覽器窗口1中與swf2交談,而我希望在瀏覽器窗口2中顯示相同內容。目前,窗口1的swf1與窗口2中的swf2交互(跨窗口消息傳遞)。對不起,如果這聽起來有點複雜:) – StarShine