我有一个java游戏,其中有一个从60秒开始的倒计时器。它工作正常,但当我暂停游戏并返回播放状态时。原来的时间现在减少了,因为我发现无论我处于什么游戏状态,计时器仍然保持从系统运行。我如何修复这个问题?
我尝试过在切换状态时将remainingTime存储到pauseTime变量中,然后减去它,但我的努力似乎失败了。
// GET ELAPSED TIME
if(gp.gameState == gp.playState && remainingTime >= 0) {
soundCounter--;
elapsedTime = System.currentTimeMillis() - startTime;
remainingTime = totalTime - elapsedTime;
if(remainingTime <= 0) {
remainingMilliseconds = 0;
remainingSeconds = 0;
remainingMinutes = 0;
// GAME OVER
gp.gameOver();
} else {
remainingMilliseconds = remainingTime % 1000;
remainingSeconds = (remainingTime / 1000) % 60;
remainingMinutes = (remainingTime / 1000) / 60;
}
}
// DRAW TIMER
timeString = String.format("%02d:%02d:%03d", remainingMinutes, remainingSeconds, remainingMilliseconds);
1条答案
按热度按时间yjghlzjz1#
您的问题是,您一直在计算从第一个
startTime
开始的经过时间。解决方案之一是计算循环迭代之间的增量(差异)时间。
下面是一些非常原始的代码,可以帮助您入门: