因此,我在這個項目中有幾個SWF,我需要找到一種方法來確保只有這些SWF中的一個的單個實例可以加載。單個SWF應用程序實例。 AS3
例如,無法在2個不同的瀏覽器中同時打開2個不同的應用程序SWF,也不能在同一臺計算機上同時打開兩個標籤。
的LocalConnection似乎是解決這一問題的最佳解決方案,但是,我們遇到的問題與Internet Explorer 9
private var lc:LocalConnection = new LocalConnection()
try
{
lc.connect ("Main");
//continue
}
catch (e:Error)
{
//swf exists.
}
看來IE9專門似乎不會立即銷燬SWF。刷新頁面可以顯示「Swf Exists」,幾秒鐘後刷新可以修復問題。
有誰知道爲什麼會發生這種情況?
失敗了。有誰知道是否有退出事件?例如,當SWF終止時,有沒有辦法在終止之前捕獲該事件並手動關閉本地連接?
onApplicationExit(e:Event): void
{
lc.close();
}
最後,有沒有人有任何其他方法可以用來嘗試實現單個swf實例?
謝謝Pkyeck。 但是,這不會也歸結爲某種Stage.Exit事件? 因爲如果用戶關閉瀏覽器,沒有辦法重置共享對象上的標誌?(即以同樣的方式無法關閉LocalConnection)。 – Clark
嗯,你是對的。認爲IE的東西是一個不同的問題。也許你可以用某種超時工作:爲SWF創建一個唯一的ID並且每5秒向SharedObject寫入一個ID和一個時間碼。每當SWF打開時,您都會比較ID並檢查時間碼是否大於5-10秒。如果是,請關閉它,如果不覆蓋sharedobject。像那樣的東西... – pkyeck