我创建了一个flash播放器,可以加载外部swfs并通过stop,play,frwd按钮控制它们。外部swf添加到下一个上一个按钮上,单击使用loader类。
删除先前添加的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请帮助。
答案 0 :(得分:0)
要停止所有声音,您可以在致电SoundMixer.stopAll();
之前尝试load()
,甚至可能在l.unloadAndStop()
之前。我从来没有用它来加载swfs,但值得一试。
答案 1 :(得分: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。希望这适用于其他人