2017-08-30 13 views
0

オーバーヘッドカメラで簡単なRPGゲームを作成しようとしています。私はのMouseMotionListenerを使用し初めてではないのMouseMotionListenerを実装行くために行ったときに、それだけの、簡単な一旦呼び出さmousedMovedたMouseEventはもう動作するようには思えないことが表示されます。私はかなりの時間のためにこれに立ち往生していた、すべての私の研究は死んでしまう。mouseMovedイベントは1回だけ呼び出されるようです。

私はチックとレンダリングの方法で完全なゲームループを持っています。しかし、以下のコードでは、マウス操作クラス(コードの最下位ビット)で、マウスが動くたびに1ずつ増加する数値を返します(tickメソッドでは、コンソールに数値の値を出力します)また、マウスのx座標とy座標をコンソールに出力する必要があります。プログラムを実行すると、数値は1に等しく、マウス座標が1回だけ印刷されます。

124 82 
1 

やプログラムには次のようになります起動したときに私のマウスは、JFrameのをホバリングされていない場合:

0 

ここに私のだコンソールの出力例は次のようになりますでしょう私のゲームループのinitメソッド:

private void init() { 
    display = new Display("Operation Blood Bath: Alpha 0_5.0", 800, 600); 
    game = new Game(); 
    Assets.init(); 
} 

はここでinitメソッドで呼び出される私の表示クラスです

チック方法:私はここで仕事をつもりです

public class MouseMotionHandling implements MouseMotionListener { 

private static int number = 0; 

@Override 
public void mouseDragged(MouseEvent arg0) { 

} 

@Override 
public void mouseMoved(MouseEvent arg0) { 
    System.out.println(arg0.getX() + " " + arg0.getY()); 
    number++; 
} 

public static int HELLO() { 
    return number; 
} 

} 

private void tick() { 
    game.tick(); 
    System.out.println(MouseMotionHandling.HELLO()); 
} 

ここで表示クラスに呼び出されるマウス操作クラスですか?

答えて

1

問題は、canvasJFrameのコンテンツペインを完全に埋めているため、すべてのマウスイベントがキャプチャされることです。最も簡単な修正は、frameではなく、canvasにマウスリスナーを追加することです。

あなたのフレームに1つのマウスイベントが表示される理由は、これは、さまざまなコンポーネントを作成する際のタイミングの問題が原因であると考えられます。

+0

Worked prefect!どうもありがとうございました。 – HuffelPuff

関連する問題