0

サウンドが添付された一連の色付きのボタンによって入力された文字列の配列があります。再生ボタンを押すと、異なる色の音に対応する弦が次々と再生されます。代わりに、それらはすべて、ごちゃごちゃしたノイズのように同時に再生されます。私はそれを機能させるためにあらゆることを試みました。トレースは、配列を介した for ループが正しいことをしているように見えることを示しています。これが、なぜそれが次々と再生されないのか理解できない理由です。

これは再生ボタンのコードです

enter code herePlayBTN.onRelease = function(){

trace("PlayButton Pressed");


for(var i:Number =0; i<songArray.length; ++i){


    trace("Inside Loop");
    trace(i);


    if(songArray[i]=="Orange"){

        OrangeSound.start(0,1);
        trace("Playing ORANGE Sound");
        //var interval = setInterval(wait,5000);
        //clearInterval(interval);
    }
    else if(songArray[i]=="Pink"){

        PinkSound.start(0,1);
        trace("Playing PINK sound");
    }
    else if(songArray[i]=="Yellow"){
        YellowSound.start(0,1);
        trace("Playing YELLOW Sound");
    }
    else if(songArray[i]=="Blue"){
        BlueSound.start(0,1);
        trace("Playing BLUE Sound");


    }
    else if(songArray[i]=="Green"){
        GreenSound.start(0,1);
        trace("Playing GREEN Sound");


    }
    else if(songArray[i]=="Red"){
        RedSound.start(0,1);
        trace("Playing RED Sound");

    }



}

これは、音 (音に対応する単語) を配列に入れる方法です。

OrangeButton.onRelease = function(){ if(FreeIndex<10){ OrangeSound = new Sound();//色付きのボタンを押すと、ライブラリに対応するサウンドが鳴ります OrangeSound.attachSound("OrangeSound");//ライブラリ内のサウンドの名前 OrangeSound.start(0,1);// 1 回のループでのみサウンドを生成します songArray[FreeIndex] ="Orange";

(各色には、これに似た独自のコード ブロックがあります。

助けてください!

4

1 に答える 1

1

次のサウンドを再生する前に、サウンドが終了したことを確認する必要があります。

function play(i){
    switch(songArray[i])){
        case Orange:
            OrangeSound.start(0,1);
            OrangeSound.onSoundComplete= function(){
                play(i+1);
            }
            break;
        case Pink:
            PinkSound.start(0,1);
            PinkSound.onSoundComplete= function(){
                play(i+1);
            }
            break;
...
        default:
            if(i+1 < songArray.length) play(i+1);
            break;
    }
}

Sound.onSoundComplete は、サウンドの完成を確認するために使用されます。上記は、play(0) で呼び出されると、songArray[i] の値に従ってサウンドを再生しようとします。曲の再生後、songArray の末尾に到達するまで、play(1) などを呼び出します。ただし、for ループの代わりに、play() は、songArray の最後に到達するまで、単に自分自身を再呼び出しします。

于 2012-04-17T17:28:38.200 に答える