目前正在编程Hangman,我遇到以下问题:
当我创建一个新的HangmanController(选择一个新单词,...)时,计时器工作正常,唯一的事情是,当我再创建一个HangmanController时,速度快2倍,当我再创建一个HangmanController 3x时,等等 我只在
时创建一个HangmanController问题出在哪里?或者我怎样才能让计时器更好?
//这里是我创建一个新的HangmanController的地方。当用户更改难度(按HTML中的按钮)时会发生这种情况
function inithm(difficulty) {
hm = new HangmanController();
hm.hmModel.reset(hm.displayedWord.word, false, difficulty);
UsedLetters();
};
//构造
HangmanController = function() {
this.hmModel = new HangmanModel();
//this.hmView = new HangmanView(document.getElementById('hm_view'));
this.displayedWord = new DisplayedWord();
this.userGuessField = document.getElementById('guessfield');
this.userGuessField.focus();
this.guessbutton = document.getElementById('guessbutton');
this.guessbutton.disabled = false;
/*this.updateTime = function(stopwatch) {
var e = stopwatch.getElapsed();
document.getElementById('stopwatch').innerHTML = e.hours * 60 + e.minutes + ' mins' + e.seconds + ' secs';
};*/
this.stopwatch = new Stopwatch();
};
//计时器,只在这里调用,其他地方(在setInterval处)
Stopwatch = function() {
this.sek = 0;
setInterval(function() {timer();}, 1000);
};
function timer() {
document.getElementById('stopwatch').innerHTML = this.hm.stopwatch.sek;
this.hm.stopwatch.sek++;
}
Stopwatch.prototype.stop = function() {
document.getElementById('stopwatch').innerHTML = 0;
};
答案 0 :(得分:1)
您正在为每个Stopwatch
创建多个HangmanController
实例,并且每个人都会每秒调用一次timer(),这会导致您的#stopwatch元素每秒增加一次,而不是每秒一次; - )
编辑:您应该在创建新HangmanController
之前处置旧的HangmanController
(尤其是秒表功能),或者只创建一个{{1}}的实例,并且制作重启或难度变化等方法。