2017-01-20 7 views
-1

私は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

投稿したコードから、私はあなたがJavaFXの背後にある概念を見逃しているという印象を受けました。 JavaFXアプリケーションをどのように実行するかを見てみましょう。例えば、ScoreはUIからバインドされた 'IntegerProperty'を保持することができます。 – hotzst

+0

どうすればいいですか?私はIngegerPropertiesを見てきました。正直なところ、それがどのように@hotzst – Jackfor

答えて

1

をダウンロードすることができます。タイムラインはこの目的には適していません。むしろ、このようなAnimationTimerを使用します。

new AnimationTimer(){ 

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

}.start(); 

handleは、タイマーがアクティブであるすべてのフレームに呼び出されます。

関連する問題