如何循环的背景音乐,而游戏结束条件在ActionScript 3没有得到满足?

问题描述 投票:0回答:1

我是相当新的动作脚本,并且需要知道如何循环BG音乐。我知道其他语言,你可以这样做

    while(!endGame){
          sound.play();
}

但我似乎无法找到如何做到这一点的AS,或者也许有更好的方法的语法?这是7秒的片段,所以我需要它来继续循环,直到终止条件得到满足。

actionscript-3 while-loop flash-cs6 background-music
1个回答
2
投票

AS3提供了两种方法来解决这个问题。最直接的告诉播放命令你想有一个声音用它的重复次数环路参数。 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);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.