0

我有一个字符串数组,每个字符串都由一系列带有声音的彩色按钮输入。当按下播放按钮时,对应于不同颜色声音的琴弦应该一个接一个地播放。取而代之的是,它们都在杂乱无章的噪音中同时播放,我已经尽一切努力让它发挥作用。跟踪显示通过数组的 for 循环似乎在做正确的事情,这就是为什么我不明白为什么它不会一个接一个地播放。

这是播放按钮的代码

enter code herePlayBTN.onRelease = 函数(){

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);//它们只为一个循环发出声音 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] 的值播放声音。歌曲播放后,它将调用 play(1) 等等,直到 i 到达 songArray 的末尾。不过,play() 不是 for 循环,而是简单地重新调用自身,直到它到达 songArray 的末尾。

于 2012-04-17T17:28:38.200 回答