JavaでGame - 入力処理メモ

作成 2004/9/26

キー入力

KeyListener

キーボードからの入力を取得する最も素直な方法は、KeyListenerを利用する方法。KeyListenerはインターフェイスなので、どのクラスにimplementsしても可。

KeySample.java

keyTypedは、文字キーが押されたときに発生するイベント。keyPressedにまとめちゃえるので、使わなくてもいい場合も多い。

キーリピート

キーを押しっぱなしにしとくと、リピートレートごとにkeyPressed、keyTypedのイベントがとんでくる。「キー→(自作コマンド)→フラグ」みたいにして、ループ中で一定期間ごとにフラグ判定する形にしておけばキーリピートは無視できる。

MNEMONICキーとかfocusTraversalKeyとかe.consume()とか

@TODO

マウス入力

マウス入力のリスナー

マウス入力は、MouseListener、MouseMotionListener、MouseWheelListenerを使って取得できる。

MouserSample.java

メソッド全部書くのがめんどい場合は、リスナーの空実装のアダプターもある(MouseAdapter、MouseMotionAdapter)。

カーソルの変更

setCursorメソッドで変更できる。

setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

カーソルの非表示メソッドはないが、空イメージのカーソルをセットすることで代用可能らしい。

プログラムからマウス位置を操作

java.awt.Robot#moveTo()で移動可能。RobotってJREのクラスっぽくないなぁ。。。

その他の入力フック

ComponentのprocessKeyEvent()やprocessMouseEvent()などをオーバーライドすることで、キーやマウスのイベントをフックできる。この場合、マウスイベントを有効にしておく必要がある(キーはデフォルトでオン)。

enableEvents(AWTEvent.MOUSE_EVENT_MASK);

また、AWTEventListenerを利用することですべてのAWTイベントをフックできる。

Toolkit.getDefaultToolkit().addAWTEventListener(new MyAWTEventListener(), -1);

入力イベントと(自作)コマンドのマッピング

@TODO

参考

Developing Games in Java

Javaゲームプログラミング


BACK | TOP