我在JavaFX中制作Flappy Bird,并且我已经创建了一种方法来告诉分数。我已经尝试过使用时间轴,但是如果我让它经常调用方法,那就会非常麻烦,如果我让它变慢,那么得分会错误地增加。我需要一种方法来不断调用得分方法,而不会让游戏变得缓慢而且有毛病。
以下是得分方法:
public class Score {
static int score = 0;
static boolean incrementScore = false;
public static int ScoreCount() {
for (int i = 0; i < 100; i++) {
if (FlappyBird.bottomPipes[i].getTranslateX() == Bird.birdView.getTranslateX())
incrementScore = true;
if (incrementScore)
score++;
incrementScore = false;
System.out.println(score);
}
return score;
}
}
如果有人知道这样做的好方法,请告诉我。
如果您想运行该程序,可以下载here
答案 0 :(得分:1)
你应该考虑在每一帧中计算你的分数。时间表不适用于此目的。而是使用这样的AnimationTimer
:
new AnimationTimer(){
@Override
public void handle(long now) {
Score.ScoreCount();
}
}.start();
handle
将在定时器处于活动状态的每一帧中被调用。