전역으로 선언 된 세 개의 setInterval 함수가 있고 그 중 두 개는 작동하고 다른 함수는 내가하는 일과 상관없이 작동하지 않습니다. stopGame에서라고 나는 간격을 취소하기 위해 별도의 기능을 사용하고 (기능 ClearintervalTime()),()글로벌로 선언 할 때 setInterval이 작동하지 않습니다.
var clearIntervalvariable0, clearIntervalvariable1, clearGameInterval1=null;
function gameDuration() {
counter = 90;
clearGameInterval1 = setInterval(gameDurationCounter, 1000);
function gameDurationCounter() {
counter--;
document.getElementById('timer').innerText = 'Time remaining:' + counter;
speed();
if (counter == 0) {
stopGame();
// clearInterval(clearGameInterval1);
console.log('game was stopped');
};
};
};
function ClearintervalTime() {
clearInterval(clearGameInterval1);
clearInterval(clearIntervalvariable0);
clearInterval(clearIntervalvariable1);
};
function stopGame() {
bubbles.length = 0;
noLoop();
ClearintervalTime();
};
이 코드는 상관없이 내가 무엇을 작동하지 않는 유일한는 일이되어 있는지 확인합니다 내가 clearGameInterval1을 gameDuration()에서 로컬로 선언하고 주석 처리 된 행으로 gameDurationCounter() 클로저 함수에서 닫으면. 게임 중지 버튼이 있습니다. 카운터가 0에 도달했을 때뿐만 아니라 buttonclick에서도 간격을 닫고 싶습니다. clearInterval (clearGameInterval1)을 주석 처리하면 위의 코드를 그대로두고 카운터를 시작하지 않습니다. ClearintervalTime()에서 카운터가 시작되지만 멈출 수 없거나 지울 수 없습니다 ... 문제를 해결하려고합니다. 같은 이름을 가진 다른 변수 나 함수는 없으며 동일한 효과를 내기 위해 gameDurationCounter()를 외부 (클로저가 아님)로 가져 오려고했습니다. 누군가가 무슨 일이 일어나고 있는지, 무슨 일이 일어나고 있는지 말해 줄 수 있습니까?
그리고 어떻게'gameDuration'이 불려지나요? 간격을 먼저 지우지 않고 해당 함수를 계속 호출하면 전역에 새 간격을 계속 추가하고 이전 간격의 처리기가 손실되며 더 이상 지울 수 없습니다. – adeneo
동시에 여러 게임을 실행 중이십니까? 아니면 한 번에 하나의 게임 만 실행할 수 있습니까? 실행할 수 있고 문제를 재현 할 수있는 스 니펫을 제공하면이 질문이 훨씬 더 명확 해집니다. – trincot
0 clearGameInterval1를 설정하고 onclick을 부착이 기능이있는 시작 버튼을 클릭 할 때 호출되는 – Geeky