Как зациклить фоновую музыку, если в ActionScript 3 не соблюдены условия завершения игры? - PullRequest
0 голосов
/ 08 февраля 2019

Я довольно новичок в сценарии действий, и мне нужно знать, как зацикливать музыку BG.Я знаю другие языки, вы могли бы сделать что-то вроде

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

, но я не могу найти синтаксис, как это сделать в AS, или, может быть, есть лучший способ?Это 7-секундный клип, поэтому мне нужно продолжать цикл до тех пор, пока не будут выполнены конечные условия.

1 Ответ

0 голосов
/ 08 февраля 2019

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);
        }
    }
}
...