目前,我正在使用一个间隔来查找我的游戏的介绍音乐是否结束。
Musictimeout = setInterval(function () {
if (Initialmusic.currentTime > 313) {
Loopingmusic.play();
Loopingmusic = true;
clearInterval(Musictimeout);
}
}, 10);
但是,这会大大降低游戏速度,直到间隔被清除。在这种情况下,我可以使用事件监听器而不是间隔吗?
最佳答案
在回答您的主要问题时,没有通用的内置事件监听器会在 javascript 中的变量值更改时触发。
但是,如果您的变量与时间相关(名为 currentTime
的属性听起来可能是这样),那么您可能可以使用巧妙设置的 setTimeout()
来了解确切何时检查它的值,而不是像你现在所做的那样每 10 毫秒检查一次。我们必须更多地了解你到底想做什么以及 Initialmusic.currentTime
到底是什么知道什么是更好的建议。例如,如果您想知道播放中的某个特定点何时被击中,您应该能够注册开始/停止事件,并让您自己的计时器继续运行,它应该会告诉您大约什么时候达到所需的播放时间。
如果您只是等待音频播放完毕,那么您可以只注册音频事件,以便在音频结束时使用 "ended"
事件。参见 here媒体事件。
此外,仅对于现代浏览器,如果您控制 Initialmusic.currentTime
的创建,那么您可以定义一个 setter 函数,该函数会在其值更改时随时触发通知。请参阅此代码示例:https://gist.github.com/eligrey/384583 .我不知道这种类型的解决方案是否适用于音频主机对象(我猜它可能不会)。您必须在多种现代浏览器中尝试才能看到。
关于javascript - 是否可以使用事件监听器而不是间隔来检查变量是否为特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21799453/