-1

所以,我对 java 和 android 编程相当陌生,我在为我正在从事的项目编写代码时遇到了问题。基本上,有一个时间列表,我认为需要将其存储为数组。游戏开始后,它需要做以下两件事之一:

  1. 如果用户在数组中的几毫秒时间内按下屏幕,它将注册为点击并增加计数。
  2. 如果用户在“命中”时间之外按下屏幕,它将注册为未命中并将计数重置为 0。

现在,我已经准备好所有的元素来让一切正常工作(增加屏幕按压等)。我的问题是检测用户是否按时按下屏幕的代码。我已经尝试进行一些搜索,但我无法弄清楚。以下是“好”热门歌曲的一小部分时间:

  • 0.25
  • 0.84
  • 1.03
  • 1.60
  • 2.3
  • 2.6
  • 2.9

这些时间可能会发生一些变化,如果无法正常工作,可以删除一些时间。我能想到的最大问题是确保它在游戏开始时启动计时器,以便时间匹配。当前计时器从 100 开始,每次倒计时 1 秒,当它到达零时,它会将用户带到游戏结束屏幕。如果有更好的方法或不同的方法使屏幕按压检测代码起作用,这当然可以改变。

知道如何进行这项工作吗?

4

1 回答 1

1

实际上,您需要做的就是在游戏开始时记录当前系统时间。然后,它只是:

long startTime = System.currentTimeMillis();
//...
System.currentTimeMillis() - startTime;

然后,检查您是否在数组中任何点设置的范围内(我将假设它是一个双精度数组):

public final static int THRESHOLD_MSEC = 100;
public boolean isHit(double time) {
    int time = System.currentTimeMillis - startTime;
    for(double d : array)
        if(Math.abs(d-time) < THRESHOLD_MSEC) return true;
    return false;
}

然后,在应用程序的其他地方,您可以处理isHit返回 true 或 false 时发生的情况。我不会为你写那部分。需要注意的一点:与人类的反应相比,几毫秒是微不足道的,没有人能够做到这一点。

于 2013-04-24T16:33:43.090 回答