제 연구의 일부로 저는 캔버스를 사용하여 자바 스크립트에서 게임 "스페이스 인베이더"를 만듭니다. 게임이 시작되기 전에 기본 페이지가로드되고 새 게임 버튼을 클릭하기를 기다리고 있습니다. 이 버튼을 클릭하면 게임이 제대로 실행되기 시작하며 전혀 문제가 없습니다. (게임은 update() 및 render() 함수를 호출하는 재귀 함수를 통해 실행됩니다. 게임을 실행하는 동안이 버튼을 다시 누르면 문제가 발생합니다. 무슨 일이 일어나더라도 게임은 더 빨리 달리고 여러 번 클릭하면 더 빠르고 더 빨리 게임을 할 수 있습니다 ...버튼을 세 번 클릭하면 게임이 더 빨라지고 빠르게 돌아갑니다 - javascript
왜냐하면 간격의주기가 분명하지 않았기 때문입니다. 함수 자체를 다시 호출하고 재귀 함수로 루프를 유발합니다.
감사합니다.
// ---------------------------------------- // // 새 게임 버튼을 눌렀을 때 호출되는이 함수는
function startGame()
{
clearInterval(timeInterval);
run();
// run function - run the recursive function below
timeInterval = setInterval(randEnemyShots,frequencyShot);
// randEnemyShots function - choose one enemey from all enemies to shot
// frequencyShot variable - this is the frequqncy of shots
}
// ------------------------------- --------- //
function run()
{
var loop=function(){
if(gameRuning)
{
update();
// update function - all the logic of game
render();
// render function - drawing the game
window.requestAnimationFrame(loop,canvas);
}
};
window.requestAnimationFrame(loop,canvas);
}
// ------------------------------ -------------------------------------------------- --------------------------------------- //
버그가 아니라 "Start Game"을 "Difficulty Increment"로 변경하십시오. – maximelian1986
나는 그것에 대해서도 생각하지만 계획 B로 저장합니다.) –
심각하게 전체 스크립트를 제공 할 수 있습니까? 변수의 범위는 무엇입니까? timeInterval, gameRunning? – maximelian1986