How do you loop a sound in flash AS3 when it ends?

后端 未结 8 1473
北海茫月
北海茫月 2020-12-16 02:47

What AS3 code is used to loop a sound using AS3?

相关标签:
8条回答
  • 2020-12-16 03:29

    This won't give you perfect, gapless playback but it will cause the sound to loop.

    var sound:Sound = new Sound();
    var soundChannel:SoundChannel;
    
    sound.addEventListener(Event.COMPLETE, onSoundLoadComplete);
    
    sound.load("yourmp3.mp3");
    
    
    // we wait until the sound finishes loading and then play it, storing the
    // soundchannel so that we can hear when it "completes".
    function onSoundLoadComplete(e:Event):void{
        sound.removeEventListener(Event.COMPLETE, onSoundLoadComplete);
        soundChannel = sound.play();
        soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);
    }
    
    //  this is called when the sound channel completes.
    function onSoundChannelSoundComplete(e:Event):void{
        e.currentTarget.removeEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);
        soundChannel = sound.play();
    }
    

    If you want the sound to loop many times with a flawless, gapless playback, you can call

    sound.play(0, 9999); // 9999 means to loop 9999 times
    

    But you still would need to set up a soundcomplete listener if you want infinite playback after the 9999th play. The problem with this way of doing things is if you have to pause/restart the sound. This will create a soundChannel whose duration is 9999 times longer than the actual sound file's duration, and calling play(duration) when duration is longer than the sound's length causes a horrible crash.

    0 讨论(0)
  • 2020-12-16 03:29

    The other answers are great, however if you do not want to use code (for whatever reason), you can put the sound in a movieclip, set the sound property to "Stream", and then add as many frames as you like to the movie clip to ensure it plays fully.

    This, of course, is a less preferred way, but for animators I'm sure it may be preferable in some situations (for example when synced with mouth animations that the animator wants looped).

    0 讨论(0)
提交回复
热议问题