Как полностью остановить и выгрузить внешние загруженные звуки SWF в AS3? - PullRequest
0 голосов
/ 09 января 2012

Я создал флеш-плеер, который загружает внешние SWF-файлы и управляет ими с помощью кнопок Stop, Play, Frwd.внешний 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 со звуком.и кажется, что ничего не работает со звуковым потоком, даже выгрузите AndStop, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Проблема исправлена ​​на данный момент

вот что я использовал для удаления старого загруженного извне 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 () и stop в конце

внешне загружен SWF с аудио. Надеюсь, что это работает для других

0 голосов
/ 09 января 2012

Чтобы остановить все звуки, вы можете попробовать SoundMixer.stopAll(); перед тем, как позвонить на load(), а может быть, даже до l.unloadAndStop().Я никогда не использовал его для загруженных SWF-файлов, но стоит попробовать.

...