需要不断调用方法

时间:2017-01-20 01:31:51

标签: java javafx

我在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

1 个答案:

答案 0 :(得分:1)

你应该考虑在每一帧中计算你的分数。时间表不适用于此目的。而是使用这样的AnimationTimer

new AnimationTimer(){

    @Override
    public void handle(long now) {
        Score.ScoreCount();         
    }

}.start();

handle将在定时器处于活动状态的每一帧中被调用。