javascript - 是否可以使用事件监听器而不是间隔来检查变量是否为特定值?

标签 javascript jquery html

目前,我正在使用一个间隔来查找我的游戏的介绍音乐是否结束。

 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/

相关文章:

javascript - 动画完成后如何添加类?

javascript - 停止从 jquery Draggable stop 到 onclick 的事件传播

html - 我无法将我的背景图片从我的 FTP 上传到我的网站

php - 服务器即时创建文件供客户端保存

javascript - useFakeTimers 和异步回调

javascript - Babel 加载器无法导入 React

javascript - 如何在 3 秒内自动隐藏弹出窗口。

html - h1 标题旁边的小图片

javascript - 在通过模型传递的 View 上显示列表

javascript - knockout 双向装订