2013-04-22 5 views
0

Я пытаюсь добавить swf для сцены с огнем игры, но у меня возникла проблема с повторением звука после removeChild и установкой объекта в null. Я пытаюсь добавить файл и удалить его после длины кадров в анимации (721) и удалить его, чтобы перейти к другим вещам.Actionscript 3 удаление swf audio не останавливается

Я также пробовал ролики [0] .stop(); и SoundMixer.stopAll(); как это было предложено другими должностями.

removechild() удаляет визуальный аспект файла/анимации, но не аудио, и он повторяется после того, как длина анимации (721 кадр) повторяется, как если бы она была перезагружена. Как я могу остановить звук?

package { 
import flash.display.*; 
    import flash.media.*; 
    import flash.utils.*; 
       import flash.events.*; 
    [SWF(backgroundColor="#0000ff", frameRate="24", width="640", height="480")] 
public class main extends MovieClip 
{ 
    [Embed(source="/Cutscenes/Intro_Scene 1.swf")] 
    private var scene1:Class 
    public var cutscenes:Array = new Array(); 
    public var scene_exists:Boolean = false; 
    public var scene_timer:Number = 0; 
    public function main() 
    { 
     scene_exists = false; 
     addEventListener(Event.ENTER_FRAME, play_intro); 
    } 

    public function play_intro(event:Event):void 
    { 
     scene_timer++; 
     if (scene_exists == false) //Add cutscene 
     { 
      cutscenes[0] = new scene1(); 
      addChild(cutscenes[0]); 
      scene_exists = true; 
     } 

     if (scene_timer == 721) //Remove cutscene 
     { 
      SoundMixer.stopAll(); 
      scene_exists = false; 
      removeChild(cutscenes[0]); 
      cutscenes[0] = null; 
      scene_timer = 0; 
      removeEventListener(Event.ENTER_FRAME, play_intro); 
          //Do next thing 
     } 
    } 
} 

}

+0

Вы пытались загрузить SWF через класс Loader, а не напрямую встраивать его, а затем вызвать метод unloadAndStop на Loader? Обратите внимание: вы можете вставлять байты для SWF и вручную загружать их в Loader через метод loadBytes, если вам нужно вставлять данные, а не загружать их во время выполнения. – meddlingwithfire

ответ

1

Не уверен, если это вопрос, но попытайтесь остановить заставку так:

cutscenes[0].stop(); 

Затем сделать SoundMixer.stopAll(); т.д.

Моя мысль в том, что временная шкала .swf будет продолжать играть и даже повторять, если не остановить.

Удаление объекта DisplayObject из списка отображения не останавливает воспроизведение анимации/звука, а просто удаляет его из списка отображения.

Смежные вопросы