我有一个字符串数组,每个字符串都由一系列带声音的彩色按钮输入。当按下播放按钮时,对应于不同颜色声音的弦应该一个接一个地播放。相反,他们都在一个混乱的噪音混乱的同时玩,我已经尝试了一切来使它工作。跟踪显示通过数组的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] =“橙色”;
(每种颜色都有自己的代码块。
请帮忙!
答案 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的结尾。