我正在创建每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));

可能是你的问题的一些其他细微差别 - 如果有的话随意发表评论。