setInterval
と呼ばれる変数を作成しましたcycle1
。これは、 と同じであるsetInterval
というオブジェクトへのプロトタイプ化された関数の内部で作成されます。作成後も起動しますが、残りのスクリプトとコンソールからはアクセスできません。この間隔を別のプロトタイプ関数からクリアしようとしても、何も起こりません。eGi
$_
eGi.prototype.startGame = function() {
//other code...
if (somethingOrOther) {
var somethingElse = confirm("start interval?");
if (somethingElse) {
this.cycle1 = setInterval($_.cycle,toMS(INTERVAL_SECONDS));
}
} else {
this.cycle1 = setInterval($_.cycle,toMS(INTERVAL_SECONDS));
}
};
次に、別の関数でそれを停止しようとすると
eGi.prototype.gameOver = function() {
clearInterval(this.cycle1);
//other code...
if (restart) {
$_.startGame();
} else {
$_.mainMenu();
}
};
クリアされることはなく、 の呼び出しで再度作成されるようです$_.startGame
。$_.cycle1
またはeGi
インスタンス変数を使用してChromeコンソールからアクセスすることさえできませんegi.cycle1
. eGi
奇妙なことに、これは私のオブジェクトに属する他の変数にアクセスするために機能します:
var eGi = function(console,cDom,ctxt,game,devMode) {
$_ = this;
this.game = game;
this.cDom = cDom; //specifically, these objects control the canvas' DOM
this.ctxt = ctxt; //and the CanvasRenderingContext2D
}
eGi.prototype.mainMenu = function() {
this.ctxt.fillText("Hello",250,250); //this works just fine
//etc
};
なぜクリアされないのでしょうか?
完全なコード/ゲームはこちら.