3

AS3 外部 wav サウンドを連続して再生しようとしています。これを行う明白な方法は、次のアルゴリズムを使用することです。 1. サウンド 1 を再生します 2. サウンド 1 が終了したら、サウンド 2 を再生します。

問題は、ステップ 2 (「サウンド 1 が終了したとき」の部分) を失敗したことです。

mp3 ではなく、wav サウンドのみについて回答してください。

これが私のコードです:

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

(もちろんこれはステップ1です)

ありがとう

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 に答える