window.requestAnimationFrame
을 사용하여 게임 루프를 만듭니다.addEventListener with requestAnimationFrame
모든 것이 잘 작동하지만 이벤트 리스너를 추가하려고하면 정말 빠르게 수백 번 발생합니다.
클로저를 사용해 보았지만 작동하지 않습니다.
game.update = function(){
//code that runs every frame
window.addEventListener('keydown', function(){
console.log("message");
},false);
}
나는 여러 번하지를 keyDown 이벤트에 ONCE 함수 를 호출합니다.
* "keydown 이벤트에서 한 번만 함수를 호출하려고합니다."* 그런 다음 함수를 호출 한 후에 함수의 바인딩을 해제해야합니다. 루프 내부에서 이벤트 처리기를 바인딩하는 이유는 무엇입니까? 왜 밖에서? 프레임마다 한 번 핸들러를 실행 하시겠습니까? 문제를 해결하기 위해 어떤 문제를 더 잘 설명해주십시오. –
업데이트 루프 내부가 아니라 이벤트 리스너를 한 번 추가해야합니다. 업데이트 루프는 이벤트 리스너를 생성 할 때 생성 한 객체에만 이벤트 리스너를 추가해야합니다. –
모든 프레임에서 실행되는 함수 내에서 해당 코드를 실행하지 마십시오. –