Ich verwende window.requestAnimationFrame
, um eine Spielschleife zu erstellen.addEventListener mit requestAnimationFrame
Alles funktioniert gut, aber wenn ich versuche, einen Ereignis-Listener hinzuzufügen, feuert es hunderte Male sehr schnell.
Ich habe versucht, eine Schließung zu verwenden, aber das scheint nicht zu funktionieren.
game.update = function(){
//code that runs every frame
window.addEventListener('keydown', function(){
console.log("message");
},false);
}
Ich möchte ONCE eine Funktion aufzurufen auf dem keydown Ereignis nicht mehrfach.
* "Ich möchte eine Funktion ONCE beim Keydown-Event nicht mehrfach aufrufen." * Danach muss die Funktion nach dem Aufruf der Verbindung losgebunden werden. Warum binden Sie den Event-Handler trotzdem innerhalb der Schleife? Warum nicht draußen? Soll der Handler einmal pro Frame ausgeführt werden? Bitte erläutern Sie besser, welches Problem Sie damit lösen wollen. –
Sie müssen Ereignis-Listener einmal und nicht innerhalb Ihrer Update-Schleife hinzufügen. Ihre Update-Schleife sollte nur Ereignis-Listener zu Objekten hinzufügen, die beim Erstellen erstellt werden. –
Führen Sie diesen Code nicht innerhalb einer Funktion aus, die in jedem Frame ausgeführt wird. –