首页 > 解决方案 > 循环播放音频文件数组时立即播放的音频文件

问题描述

我正在开发西蒙游戏应用程序,现在有一个测试按钮。单击它时,将随机生成的颜色推送到 botPattern 数组变量,然后我想循环遍历数组并根据存储的项目/颜色为每个数组项播放音频。

现在的问题是所有声音都是同时播放的,而不是一个接一个。所以我点击了让我们说第二次或第三次,阵列中的所有颜色声音一次播放。我该如何解决这个问题?我尝试使用 settimeout 但 id 没有任何效果。这是一个片段:

        setTimeout(simonGameApp.playAudio(color), 5000);
      });

这是代码:https ://codesandbox.io/s/00v44vrxj0

点击测试按钮调用 generateColorSequence 函数。我想要的只是播放第一个数组项目,然后播放第二个等等关于如何解决它的任何想法?

标签: javascriptsettimeout

解决方案


这是因为simonGameApp.playAudio(color)被调用并且return函数的值被传递给setTimeout()。您需要将其包装在另一个函数中

setTimeout(function(){
   simonGameApp.playAudio(color)
}, 5000);

ES6 语法

setTimeout(() => simonGameApp.playAudio(color),5000)

推荐阅读