2012-08-06 187 views
1

我有一個簡單的可擴展廣告,它加載了一個外部SWF文件。外部SWF文件包含嵌入的視頻。AS3 UILoader SWF在後臺繼續播放

使用UILoader組件,我已經加載了SWF,將它添加到舞臺上,並且視頻顯示並播放正常。

主要問題是我有一個關閉按鈕,它應該卸載視頻,並停止它,基本上返回到廣告的默認狀態。

要卸載SWF,我做了以下內容:

myUILoader.unload(); 
removeChild(myUILoader); 

當我做到這一點,視頻和UILoader的從屏幕上消失。但是,您仍然可以在背景中聽到聲音,並且如果我再次加載SWF,它會在後臺創建多個軌道。有什麼建議麼?

+0

如果將'myUILoader'設置爲空,會發生什麼?你真正應該做的是在你加載的SWF中,編輯代碼並添加一個Event.REMOVED_FROM_STAGE事件來處理停止所有必要的聲音/視頻。 – Ronnie 2012-08-06 21:48:16

回答

1

有幾件事情可能導致這種情況。一個是你的UILoader內部的內容是將事件監聽器添加到它自己之外。你可以通過不讓它觸及任何東西來解決這個問題。我相信你可以通過將它放在它自己的ApplicationDomain,SecurityDomain或兩者中來實現。請參閱幫助以瞭解更多詳情。

如果這是不可行的,你可以嘗試SoundMixer.stopAll(),它會停止明顯的症狀,但不會解決你在這種情況下可能發生的內存泄漏問題。

Ronnie指出的另一種可能性是,你仍然可以在某處引用裝載器的內容。如果你不清楚,它會留在記憶中。

但是,還有另一個問題也可能導致這種情況,即如果在電影中存在導航而跳過包含音頻設置爲「流」的MovieClip的幀,則將創建MC,但不會完全實例化,並將留在內存中,無法控制它或釋放它。我不認爲這是你描述中發生的事情。如果是這樣,修復方法是確保您訪問包含聲音的幀,但是簡要地說,在到另一幀的路上。實際上,即使沒有聲音,也可能需要考慮這一點,因爲每當您跳過嵌套的動畫片段中的幀時就會出現這種情況(除非您分析swf,否則您只是沒有證據),隨着時間的推移,這會造成內存泄漏。