2011-05-31 80 views
0

在div中,我們使用swfobject嵌入Flash播放器。我們在操作腳本中編寫了Flash Player。在網頁的初始化過程中,我們使用javascript調整div的大小,使播放器最適合瀏覽器。附帶的Flash播放器註冊OnResize事件監聽器和處理程序。問題是OnResize事件在封閉div的大小調整時未被調用。 (當我們拖動以調整瀏覽器大小時,OnResize事件確實會被調用。)當調整div的大小時,Flash虛擬機是否可以完全準備好?在這種情況下,確保調用OnResize事件的最佳方法是什麼?Flash未收到調整大小事件

謝謝。

回答

0

要確定事件是否按照您期望的順序觸發,請將它們全部記錄到您的JS控制檯。使用console.log與Firebug/Chrome Dev記錄DIV從JS調整大小,並使用ExternalInterface封裝器在相同的console.log周圍記錄Flash事件觸發。

在Flash中,當Flash準備就緒時,將會觸發onAddedToStage。我通常在onAddedToStage處理程序中手動激發onResize,以防窗口在Flash準備好之前調整大小。您也可以讓JS調整大小處理程序推遲在Flash上​​觸發onResize,直到onAddedToStage被觸發後,如果確保使用ExternalInterface將onAddedToStage發佈到JS。

+0

謝謝,伊恩。我也看到這篇文章:http://stackoverflow.com/questions/4771379/when-can-javascript-start-calling-actionscript。那麼首先會發生什麼事件,ExternalInterface的ready和onAddedToStage?謝謝。 – shouren 2011-05-31 20:49:56

+0

你的意思是'ExternalInterface.available'?根據文檔,我認爲沒有「ExternalInterface ready」。 'available'的問題是你必須輪詢它。此外,在我的實驗中,「可用」是真實的,只是表示在階段設置中初始化ExternalInterface時已經觸發了「ADDED_TO_STAGE」。 – Ian 2011-06-01 00:08:12

+0

對不起,遲到的迴應。我試圖使用AddedToStage事件,但不知何故它不起作用。真奇怪。也許是因爲我不在被加入舞臺的對象的控制器中。我有什麼是我與良好的廣告理念廣告整合。我創建了一個AdsLoader將其添加到舞臺上,但不知何故AddedToStage處理程序未被調用。我很好,因爲我結束了不依靠這個事件。 – shouren 2011-06-21 01:53:53