2014-10-31 33 views
4

如何判斷何時ExternalInterface可用?我已經使用ExternalInterface註冊了一些帶有一些js回調的swf。我反覆隱藏並顯示swf,並且我已經瞭解到,當swf隱藏時ExternalInterface不可用。我還注意到,swfs構造函數每次再次顯示時都會調用它,我已經使用它來確保在可用之前不會嘗試調用ExternalInterface函數。這讓我想知道,如果還有一些方法可以從swf內部可靠地告訴它隱藏的時間嗎?我知道as3類沒有析構函數,但在swf再次變得不可用之前,有沒有類似的東西可以用來觸發ExternalInterface事件? REMOVED_FROM_STAGE似乎沒有幫助檢測到它,因爲它根本不會觸發。如何判斷隱藏和顯示swf時ExternalInterface何時可用

我使用隱藏和顯示順便說一句的幾種方法。有時使用angular的ng-hide/ng-show,有時swf位於引導模式窗口內。

另外,我注意到Flash Builder可以以某種方式告訴swf何時卸載。我可以添加一個在嵌入式<object>上設置「display:none」的按鈕,並在Flash Builder的控制檯中獲取[Unload SWF]消息。這只是調試播放器的一個功能,還是Flash Builder知道我還沒有發現一些祕密事件?

+1

嗯,很好的問題。作爲一種解決方法,您可以在隱藏它之前手動將事件從JS發送到SWF。 – Cameron 2014-10-31 21:24:26

+2

無論你在做什麼,它似乎完全卸載瑞士法郎。所以並不是ExternalInterface不可用,而是swf沒有運行/加載。你使用的是什麼瀏覽器?你能設置一個小提琴嗎? – BadFeelingAboutThis 2014-10-31 21:37:17

+0

我在鉻,我真的只是做flashPlayer.style.display ='無';並立即卸載瑞士法郎。 – 2014-11-01 00:01:50

回答

1

您可以使用此代碼來檢查,如果SWF可以調用ExternalInterface的:

if(ExternalInterface.available) { 
    ExternalInterface.call("console.log","hello browser"); 
} 
相關問題