【发布时间】:2016-04-10 23:49:57
【问题描述】:
我的代码中有一个倒数计时器。这个倒数计时器应该每 10 毫秒计时一次,并将 textview 的数字加 1,直到达到用户在游戏中获得的分数。
它甚至没有达到价值的一半。这是我的代码:
new CountDownTimer(lastScore*10, 10) {
public void onTick(long millisUntilFinished) {
tempScore++;
TextView lg = (TextView)findViewById(R.id.lastgame);
lg.setText("LAST SCORE: " + String.valueOf(tempScore));
lg.setTypeface(eightBitFont);
}
public void onFinish() {
}
}.start();
Lastscore 是他们在比赛中得到的分数。 tempScore 仅用于存储新值以将 textview 更改为。
编辑:一位用户指出 10 毫秒的分辨率可能太小了。 在 10 毫秒分辨率下,我的 lastScore 值为 115,而 tempScore 仅达到 46。将其更改为 30 毫秒,我达到了 108 左右,将其更改为 50 让我更接近了。看来我将不得不使用 100 毫秒的刻度值才能使其成为正确的值。但这对于我想要实现的目标来说有点慢。有没有更好的方法来实现我想要实现的目标?
【问题讨论】:
-
你检查过什么是“lastScore”值吗?
-
是的。不使用计时器,使用 3 行 textview 代码,并将值设置为 lastScore 显示正确的值
-
嗨@Josh,lastScore 的确切值是多少(给我们一个您正在测试的示例)...... CountDownTimer 构造函数接收倒计时应该运行的时间(以毫秒为单位)作为第一个参数为。
-
我的意思是 - 在启动计时器之前 lastScore 的值是多少?
-
10 毫秒对于查找 UI 元素、更新其值和设置其字体来说可能是一个过高的分辨率。尝试 100 毫秒,并将您的 findViewById() 和 setTypeface() 调用移到 onTick() 之外。
标签: java android countdowntimer