我遇到一个问题,我的JavaScript程序中有一个幻影game
对象,它仍然附加到我的键盘输入处理程序(keymaster.js)。
在下面的代码中,我首次加载页面时在演示模式下运行startGame
,以便在用户阅读启动画面时显示模拟游戏。
然后当用户按下“开始”按钮时,我重新运行startGame
。然而,此时,每当用户按下击键时,就会发射两个子弹而不是一个。我发现有两个单独的“游戏”对象响应击键,每个对象都发射一颗子弹。
如何在游戏之间完全重置游戏状态并杀死内存中的所有相关对象?
var startGame = function(demoMode) {
this.game = new TypingFrenzy.Game({
"ctx": ctx,
"ctx_kbd": ctx_kbd,
"demoMode": demoMode
});
this.currentGameView = new TypingFrenzy.GameView(this.game, ctx);
this.currentGameView.start();
}
startGame(true)
以下是我绑定事件处理程序的代码,以回应微薄的评论:
GameView.prototype.bindKeyHandlers = function () {
var ship = this.ship;
for (i = 33; i <= 64; i++) {
var chr = String.fromCharCode(i);
key(chr, function (event, handler) { ship.processKeystroke(event, handler) });
}
};
从我的game
对象解除绑定我的关键侦听器允许删除我的game
对象。我使用了以下命令:
key.unbind('a');
非常感谢!
答案 0 :(得分:0)
这解决了这个问题。请参阅我对原始问题的编辑。
key.unbind('a');