2012-01-09 60 views
0

我創建了一個flash播放器,它可以加載外部swf並通過停止,播放,frwd按鈕來控制它們。外部swf被添加到前一個按鈕上點擊使用loader類。如何在AS3中完全停止和卸載外部加載的SWF聲音?

刪除蛔蟲加入SWF文件,並添加新的一個我用下面的代碼

l.unloadAndStop(); 

l.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadProgress); 

l.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadHandler); 

l.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loadError); 

var Request:URLRequest = new URLRequest(xmlData.Page[Current_Page_No].URL[0]); 

l = new Loader(); 

l.load(Request); 

l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,  loadProgress,false,0,true); 

l.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler,false,0,true); 

l.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); 

每一件事工作正常,如加載完成之前,我點擊下一步按鈕,我面臨着一個問題,當我點擊下一步之前快速加載之前完成的內容。 加載器似乎繼續加載之前的內容並將其聲音添加到舞臺,即使它不在當前的SWF中,聲音似乎也不會停止。我不能簡單地停止所有的聲音,因爲我將有其他的SWF聲音。並沒有什麼似乎與聲音流甚至unloadAndStop請幫助。

+1

您是否考慮在加載/卸載過程中禁用按鈕? – 2012-01-09 13:48:07

+0

不,我沒有嘗試禁用按鈕,但我打算這樣做的目的,我認爲這可能會惹惱學生。 – 2012-01-09 13:55:15

+0

我會做一些按鈕禁用,以及像Sam說的加載。 – ToddBFisher 2012-01-09 18:30:22

回答

0

問題得到解決,現在

這裏是我用來去除舊的外部加載SWF

//stop all sounds 
SoundMixer.stopAll(); 

System.gc();//force Grabage collection (might not work) 

while (Container.numChildren > 0){ Container.removeChildAt(0); }//remove from stage 

try 
{ 

currentSWF.stop();//Stop the Loaded Movie clip copy 

while (currentSWF.numChildren > 0){ currentSWF.removeChildAt(0); }//remove all children 

currentSWF = null;//null its reference 

} 

catch(er:*) 
{ 
trace("MC null"); 
} 

l.unloadAndStop(true);//unload the loader 

l.unload(); 

// remove event listeners 
l.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadProgress); 

l.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadHandler); 

l.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loadError); 

但主要是什麼幫助是SoundMixer.stopAll()並具有停止

外部加載SWF與音頻。希望這適用於其他人

0

要停止所有聲音,您可以在致電load(),甚至可能在l.unloadAndStop()之前嘗試SoundMixer.stopAll();。我從來沒有用它加載swfs,但值得一試。