我正在创建每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更改为上一级。
分析解答
首先,elapsedRealTime()
和chronometer.getBase()
以毫秒为单位,因此delta也以毫秒为单位:
long timeDeltaFromStartInMs = (SystemClock.elapsedRealtime() - chronometer.getBase());
接下来,假设计时器从未为此讨论重置,那么经过的级别数是(整数除法截断):
int numLevelsElapsed = (int) (timeDeltaFromStartInMs / 10000);
假设初始级别从0开始,那么它就是:
lvlcount.setText(Integer.toString(numLevelsElapsed));
如果该级别具有初始non-zero值(来自某些先前的游戏):
lvlcount.setText(Integer.toString(initialLevelCnt+numLevelsElapsed));
可能是你的问题的一些其他细微差别 - 如果有的话随意发表评论。