如何在ActionScript 3中不满足最终游戏条件的情况下循环播放背景音乐?

时间:2019-02-07 23:29:15

标签: actionscript-3 while-loop flash-cs6 background-music

我对动作脚本还很陌生,需要知道如何循环播放BG音乐。我知道您可以使用

之类的其他语言
    while(!endGame){
          sound.play();
}

但是我似乎找不到在AS中执行此操作的语法,或者也许有更好的方法?这是一个7秒的剪辑,所以我需要它继续循环播放直到满足最终条件。

1 个答案:

答案 0 :(得分:2)

AS3提供了两种方法来处理此问题。最简单的方法是使用它的loops参数告诉play命令您希望声音重复播放的次数。 https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Sound.html#play()

第二种方法-为您提供更多控制-有点复杂。基本上,您是在开始声音并添加一个监听器,以监视声音的播放。如果完成播放 SOUND_COMPLETE 事件,则会触发该事件,并且其回调函数可以重新开始播放。 举个例子:

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;

    public class Main extends Sprite
    {
        private var sound:Sound;
        private var soundChannel:SoundChannel;

        public function Main():void
        {
            if (stage)
                init();
            else
                addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            sound = new Sound();
            var urlRequest:URLRequest = new URLRequest("sound.mp3");
            sound.load(urlRequest);
           soundChannel = sound.play();
           soundChannel.addEventListener(Event.SOUND_COMPLETE, soundFinished);

        }

        public function soundFinished(event:Event):void
        {
            soundChannel.removeEventListener(Event.SOUND_COMPLETE, soundFinished);
            soundChannel = sound.play();
            soundChannel.addEventListener(Event.SOUND_COMPLETE, soundFinished);
        }
    }
}