3

我正在尝试以连续方式播放 AS3 外部 wav 声音。显而易见的方法是使用此算法: 1. 播放声音 1 2. 当声音 1 完成时,播放声音 2 等等。

问题是我未能通过第 2 步(“当声音 1 完成时”部分)。

请只回答 wav 声音,不要回答 mp3。

这是我的代码:

package 
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.utils.ByteArray;
    import flash.media.Sound;
    import org.as3wavsound.WavSound;
    import org.as3wavsound.WavSoundChannel;

    public final class Main extends Sprite
    {
        public final function Main():void
        {
            playB.addEventListener(MouseEvent.MOUSE_UP, loadWav);
        }

        private final function loadWav(e:MouseEvent):void
        {
            var urlRequest:URLRequest = new URLRequest('Phone.wav');
            var wav:URLLoader = new URLLoader();
            wav.dataFormat = 'binary';
            wav.load(urlRequest);
            wav.addEventListener(Event.COMPLETE, playWav);
        }

        private final function playWav(e:Event):void
        {
            var tts:WavSound = new WavSound(e.target.data as ByteArray);
            tts.play();
        }
    }
}

(当然这是第一步)

谢谢

4

1 回答 1

1

尝试将您的声音放入从 play 命令返回的 SoundChannel 中,然后监听完整事件:

private final function playWav(e:Event):void
{
    var tts:WavSound = new WavSound(e.target.data as ByteArray);
    var channel:WavSoundChannel = tts.play();
    channel.addEventListener(Event.SOUND_COMPLETE, completeHandler)
}

private function completeHandler(e:Event):void {
    //play next sound
}
于 2012-09-21T21:30:50.150 回答