我正在使用 window.requestAnimationFrame
创建游戏循环。
一切都很好,但是当我尝试添加事件监听器时,它会快速触发数百次。
我尝试过使用闭包,但这似乎不起作用。
game.update = function(){
//code that runs every frame
window.addEventListener('keydown', function(){
console.log("message");
},false);
}
我想在 keydown 事件上调用函数一次,而不是多次。
最佳答案
仅当添加新监听器时才会添加事件监听器。多次添加相同监听器没有效果 by design .
将您的监听器函数移出您要分配给 game.update
的函数这样每次调用 addEventListener()
时就不会创建监听器的新副本:
var updateListener = function() {
console.log('message');
};
game.update = function() {
//code that runs every frame
window.addEventListener('keydown', updateListener, false);
};
关于javascript - 带有 requestAnimationFrame 的 addEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071233/