3つのsetInterval関数がグローバルに宣言されています。そのうち2つは機能していますが、他の関数は機能しません。 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に達するだけでなく、ボタンをクリックするだけでなく、間隔を閉じたいと思います。 上記のコードをそのまま残すと、clearInterval(clearGameInterval1)をコメントアウトするとカウンタが起動しなくなります。 ClearintervalTime()では、カウンタが起動しますが、停止/クリアできません。これを解決しようとしています。同じ名前の他の変数や関数はありません。同じ効果を出すために(閉じていない)gameDurationCounter()を取得しようとしました。誰かが何が起こっているのか教えてください、何がうまくいかないのですか?
そして、 'gameDuration'はどのように呼び出されますか?最初にインターバルをクリアせずにその関数を呼び出し続けると、新しいインターバルをグローバルに追加し続け、古いインターバルのハンドラは失われ、クリアされなくなります。 – adeneo
複数のゲームを同時に実行しているのですか、その時に実行できるゲームは1つだけですか?実行可能な問題を再現するスニペットを提供すると、この質問ははるかに明確になります。 0から – trincot
セットclearGameInterval1、あなたはonclickの添付、この機能を持ってスタートボタンをクリックしたときに – Geeky