Flash actionscript 2.0数组播放

时间:2012-04-17 17:01:28

标签: arrays actionscript-2

我有一个字符串数组,每个字符串都由一系列带声音的彩色按钮输入。当按下播放按钮时,对应于不同颜色声音的弦应该一个接一个地播放。相反,他们都在一个混乱的噪音混乱的同时玩,我已经尝试了一切来使它工作。跟踪显示通过数组的for循环似乎正在做正确的事情,这就是为什么我无法理解为什么它不会一个接一个地回放。

这是播放按钮的代码

enter code here PlayBTN.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(){     如果(FreeIndex&LT; 10){     OrangeSound = new Sound(); //按下彩色按钮时,它们会产生库中对应的声音     OrangeSound.attachSound(“OrangeSound”); //库中声音的名称     OrangeSound.start(0,1); //它们只为一个循环发出声音     songArray [FreeIndex] =“橙色”;

(每种颜色都有自己的代码块。

请帮忙!

1 个答案:

答案 0 :(得分: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]的值播放声音。歌曲播放后,它将调用播放(1),依此类推,直到我到达songArray的结尾。而不是for循环,play()只是重新调用自己,直到它到达songArray的结尾。