我正在创建一个游戏,它将每10秒增加一个级别,用户将看到时间(使用计时器)和他们当前所在的级别。 我正在尝试创建一个整数,将每10秒递增一次,如计时器上所示。
我在这里找不到满足我需求的指南。 我试图猜测计时器的运行时间是毫秒,事实并非如此。
在我班上:
private Chronometer chronometer;
在我的onCreate(使用的XML)中:
chronometer=findViewById(R.id.timer);
尝试将计时器转换为秒(仅尝试第一次尝试):
int timeChecker=(int) (SystemClock.elapsedRealtime() - chronometer.getBase());
if (timeChecker==10){
lvl++;
lvlcount.setText(lvl+"");
}
我想每10秒增加一次级别,而不是将TextView更改为以前的级别。
答案 0 :(得分:0)
首先,elapsedRealTime()
和chronometer.getBase()
以毫秒为单位,因此增量也以毫秒为单位:
long timeDeltaFromStartInMs = (SystemClock.elapsedRealtime() - chronometer.getBase());
接下来,假设在此讨论中永不重置天文钟,则经过的级别数为(整数除法将截断):
int numLevelsElapsed = (int) (timeDeltaFromStartInMs / 10000);
假设初始级别从0开始,那就很简单:
lvlcount.setText(Integer.toString(numLevelsElapsed));
如果级别具有初始非零值(来自先前的播放):
lvlcount.setText(Integer.toString(initialLevelCnt+numLevelsElapsed));
也许对您的问题还有其他一些细微差别-如果可以的话,请随时发表评论。