【问题标题】:How to set up a timer for an android game ?如何为安卓游戏设置计时器?
【发布时间】:2014-03-20 19:12:09
【问题描述】:

我想为 Android 编写一个游戏。

玩法原则:用户应该有很短的时间来选择正确的答案。

我的问题是输入(选择答案)和时间(倒计时)之间的组合。我试图运行一个线程,但该线程不可停止。所以用户给出答案,下一个活动将被显示,一段时间后(当“计时器”变为0时)活动将再次显示。

  • 如何以正确的方式实现这一点?
  • 我应该使用Thread, Handler, CountDownTimer 吗?

【问题讨论】:

  • 你应该展示你已经尝试过的这么多。

标签: android countdowntimer android-handler


【解决方案1】:

你可能想看看alarm manager

【讨论】:

    【解决方案2】:

    你可以在初始化时使用它来保持一个正在运行的计时器:

    Timer updateTimer = new Timer("update");
    updateTimer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
        updateGUI();
            }
        }, 0, 1000);
    long startTime = System.currentTimeMillis();
    

    然后在一个线程中:

    //Clock update
    currentTime = System.currentTimeMillis() - startTime;
    SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
    clock.setText(sdf.format(currentTime));
    clock.invalidate();
    

    您可以随意使用内部或外部的布尔值来停止线程吗?

    【讨论】:

      【解决方案3】:

      好吧,我不知道要使用的具体库,我自己也没有做过任何线程编程,但我会认为程序是一个状态机。我希望它有所帮助:/

      设置boolean userHasAnswered = false

      设置专门的侦听器(例如,某些按钮的触摸侦听器)以获取答案。 如果侦听器从用户那里得到适当的响应,请设置userHasAnswered = true

      当问题加载时,启动倒计时线程。

      如果用户在时间为零时没有给出ans,只需调用loadNextQuestion()

      在您的线程中,每隔几个单位进行一次定期检查以查看是否为userHasAnswered == true,如果为真,则调用updateScore()loadNextQuestion()

      【讨论】:

        猜你喜欢
        • 2015-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多