私は次の機能を持っています:
$(document).ready(function() {
$('#p').click(function() {
$('#s1').hide();
gameStart(); <-starts timer
$('#s2').show();
});
$('.b4').click(function() {
clearInterval(tI); <-stops the time
});
$('#r').click(function() {
tI = setInterval("setTimer()", 1000); <-not working, should continue the timer again
});
});
div#p
をクリックすると、タイマーでゲームが開始されます。これはすべて機能します。divをクリックする.b4
と、タイマーが停止/一時停止しますが、これも機能します。問題は、停止した場所から継続して、タイマーを再度開始することです。
tI = setInterval("setTimer()", 1000);
divをクリックしてみまし#r
たが、これに関する問題はタイマーを開始することですが、停止した時点から継続しません。続行しますが、停止/一時停止していなければあるべき時刻からです。
どうすればこれを修正できますか?時間を一時停止して(この部分は正しいと思います)、クリックすると再び続行したい#r
これが私のタイマー関数の構築方法です:
function gameStart() {
setBlocks();
tM = $('#a1 div.tm');
hS = $('#a1 div.hs');
oT = new Date();
tI = setInterval("setTimer()", 1000);
setHs();
$('.ht').click(hint);
$('.b3').click(reset);
}
//Set timer
function setTimer() {
var n = new Date();
tM.text(getTimeText(n.getTime() - oT.getTime()));
}
//Build timer
function getTimeText(v) {
var vH = Math.floor(v / 3600000);
var vM = Math.floor((v - (vH * 3600000)) / 60000);
var vS = Math.floor((v - (vH * 3600000) - (vM * 60000)) / 1000);
return set2Digit(vH) + ':' + set2Digit(vM) + ':' + set2Digit(vS);
}
function set2Digit(ov) {
var os = '0' + ov;
return os.substr(os.length - 2, 2);
}
- 編集 -
このhtmlを使用すると、表示する時間が得られます。<div class="tm">00:00:00</div>
--EDIT2-- さて、新しい関数を作成しました。一時停止した時間を取得するため、この時点から時間が継続する必要があります。
$('#r').click(function() {
$('#s1').hide();
tI = setInterval("continueTimer()", 1000); //NEW
$('#s2').show();
});
//Test
function continueTimer() {
divObj = document.getElementById("tm");
tM.text(divObj.innerText);
}
現時点では、時間が一時停止しますが、この関数が起動されると継続しません...では、この時点からタイマーを開始するにはどうすればよいですか? 私は近いと思います