0

我正在尝试为游戏过场动画添加 swf,但在 removeChild 并将对象设置为 null 后出现音频重复问题。我正在尝试添加文件并在动画(721)中的帧长度之后将其删除,然后将其删除以继续进行其他操作。

我也试过过场动画[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
        }
    }
}

}

4

1 回答 1

1

不确定这是否是问题所在,但请尝试像这样停止过场动画:

 cutscenes[0].stop();

然后做之SoundMixer.stopAll();类的。

我的想法是 .swf 的时间线将继续播放,如果不停止,甚至会重复播放。

从显示列表中删除 DisplayObject 不会停止播放动画/音频,它只是将其从显示列表中删除。

于 2013-04-22T01:02:34.803 回答