【发布时间】:2017-07-22 11:37:40
【问题描述】:
我正在为 FreeCodeCamp 创建一个 Simon 游戏,并尝试使用 for 循环为每个模式播放音频。
我现在的代码一次播放所有音频,这对游戏不起作用。如何更改此代码,以便它单独播放每个音频声音,中间有 0.5 秒的中断?
这是播放音频并添加视觉效果的功能
function playAudio() {
if (colorColor === "red") {
red.play();
$('#red').effect("highlight", { color: colorColor }, 500);
} else if (colorColor === "blue") {
blue.play();
$('#blue').effect("highlight", { color: colorColor }, 500);
} else if (colorColor === "green") {
green.play();
$('#green').effect("highlight", { color: colorColor }, 500);
} else if (colorColor === "yellow") {
yellow.play();
$('#yellow').effect("highlight", { color: colorColor }, 500);
}
}
这是我认为问题所在的函数。
function playPattern() {
for (var i = 0; i < pattern.length; i++) {
colorColor = pattern[i];
setTimeout(playAudio, 500);
}
setTimeout(random, 750);
}
这里的 random() 函数只是因为它是在 playPattern() 中调用的
function random() {
randomColor = colors[Math.floor(Math.random() * colors.length)];
colorColor = randomColor;
colorColor = colorColor.slice(1);
pattern.push(colorColor);
count++;
if (count < 10) {
document.getElementById("count").innerHTML = "0" + count;
} else {
document.getElementById("count").innerHTML = count;
}
playAudio();
pickCount = 0;
userPick = [];
}
谢谢!
【问题讨论】:
-
使用
setTimeout(playAudio, i * 500); -
执行for循环时,所有超时设置为相同的500ms。所以所有的音频都是同时播放的。
-
我将其更改为该代码,但似乎仍然无法正常工作。
-
我阅读了该帖子并尝试了答案中的功能,但仍然无法正常工作。
标签: javascript