私は忙しくしているゲームでは、JPanelに比べて常にマウスのxとyの値を持つ必要があります。つまり、paintComponentメソッドが呼び出されるたびに値を更新する必要があります。私はmouseMoved()とmouseDragged()を使用しましたが、Graphics自体を翻訳しているので、私は常にそれをリフレッシュする必要があります。マウスリストにメソッドを作成せずにマウスのxとyの値を取得する方法がありますか?イベントを必要とせずに、マウスのxとyの位置をJPanelに対して常に更新する方法はありますか?
答えて
マウスリスナーにはMouseEvent
があり、そこからマウスの位置を取得できます。
class MyMouseListener extends MouseMotionAdapter {
@Overrride
public void mouseDragged(MouseEvent e) {
int mouse_x = e.getX();
int mouse_y = e.getY();
// ... use mouse_x & mouse_y
}
}
注:#paint(Graphics g)
メソッドで必要な場合は、このマウスの場所を保存する必要があります。 Windowsオペレーティングシステムで#paint(Graphics g)
呼び出し中にマウスの位置を問い合わせることができるかもしれませんが、私はMac OSで「ロックアップ」を経験しています。したがって、マウスのリスナーにマウスの位置を保存し、ペイントメソッドで保存された位置を使用します。
私の状況では、マウスを使わずにマウスの位置を取得する必要があるという問題があります。私は、敵をターゲットにする方法としてマウスポインタを使用するゲームを作っています。左または右に飛んでいると、グラフィックス全体が逆に変換されます。つまり、マウスを押したままにして、キーで左右に操作すると、xとyの値は更新されません。 –
グラフィックスを移動してもマウスの位置は変わりません。 [逆変換](https://docs.oracle.com/javase/7/docs/api/java/awt/geom/AffineTransform.html#inverseTransform%28java.awt.geom.Point2D,%20java)を適用する必要があります。 .awt.geom.Point2D%29)をマウス/スクリーン座標にドラッグしてモデル座標系に変換します。 – AJNeufeld
私はすでに持っています。ターゲットシステムは、カーソルを1点に向けた状態で拘束(左右に移動)しない限り、すべての状況で機能します。これは、マウスが画面に対して移動していても、実際の動きは検出されていないため、最初のクリックで記録されたx値が最新の更新値であったためです。私はそれがプログラムの進行中に常に更新されるようにしたいと思います。移動したりドラッグしたりしたときだけではありません。 –
MouseInfo.getPointerInfo()。getLocation()を試すことができます。 画面に対してマウスポインタの位置を返します。 PointerInfo
サンプルコードについて より:
PointerInfo relative = MouseInfo.getPointerInfo();
Point coord = relative.getLocation();
int x = (int) coord.getX();
int y = (int) coord.getY();
は、私はあなたがこのための独自の方法を見つけたことを承知しているが、ちょうど答えとして解決策を提供します。
画面のPoint
取って、あなたのゲームの座標系への変換を扱うAimer
class
のいくつかのフォームを持っている、とマウスが移動するたびに更新しますMouseListener
にそれを与えます。これにより、マウスの現在の画面は常にPoint
になりますが、ゲーム内の座標への変換は他の場所で処理されます。このような
何か:
public class AimingMouseListener extends MouseAdapter {
private final Aimer aimer;
public AimingMouseListener(Aimer aimer) {
super();
this.aimer = aimer;
}
@Override
public void mouseMoved(final MouseEvent e) {
aimer.setCurrentMousePoint(e.getPoint());
}
}
- 1. Chart.js y値の位置とX値に対するXラベルの相対位置
- 2. マウスのX/Y位置をトラッキングしてラベルに印刷する方法は?
- 3. 位置を絶対値として使用せずにx、y位置のdivにhtmlコントロールを動的に配置する方法
- 4. SQL Server:位置(x、y)のセル値を更新する方法
- 5. フレームからマウスをクリックしたときにx、yの位置を取得する方法は?
- 6. Bootstrap Modalウィンドウのマウスx y位置が正しくありません
- 7. JAVAFX - このX/Y位置に何かがありますか?
- 8. バックグラウンドJPanelを一度正しく描画し、フォアグラウンドJPanelを常に更新する方法はありますか?
- 9. Jframeに対してJavaでマウスの位置を常に取得
- 10. scrollTopを使わずにdivの位置をウィンドウに対してリアルタブにする方法はありますか?
- 11. Javaポップアップ、JpanelとPopupFactory - xとy座標を更新する
- 12. (マウス)ホイールとスクロールの正しいXTERM/ANSIシーケンスは何ですか?X、Y座標は必要ありません。
- 13. x、y位置にImageButtonを配置する方法は?
- 14. マウスのクリック位置を確認する方法は、必要なアプリケーションにありますか?
- 15. javascriptでマウスのxとyの位置を表示
- 16. マウスのxとyの位置を画面に表示しようとしています - 0,
- 17. Unity 2D Yを乱さずにX位置をアニメーション化する方法は?
- 18. Python:xとyを更新せずにスキャターで領域を更新する方法
- 19. xとyの位置は、この配列には何のxとy
- 20. mousemove over要素 - 正確なマウス位置を得るX Y
- 21. xとyの位置。
- 22. 特定のマウスの位置を特定する方法x軸値とy軸値は何ですか?
- 23. SignTabs XとYの位置を確認する方法
- 24. Photoshopのマウス位置のx座標とy座標
- 25. Python 3でマウスのxとyの位置はどうやって見つかりますか?
- 26. RecyclerViewアダプタをx秒ごとに更新する必要があります
- 27. モーダルオーバーレイは絶対位置を必要としますか?
- 28. 10秒間に500ミリ秒ごとにマウスの位置を追跡する方法はありますか?
- 29. リモートレポのファイルを更新するには、まずそのレポをクローンする必要はありませんか?
- 30. 他のユーザーがテーブルに更新したときにイベントを発生させる方法はありますか?
これを行う方法は間違いなくあります(変数に 'mouseMoved'イベントの位置を保存し、アクセサを提供し、独自の' MouseListener'を実装)。しかし、あなたが何を記述しているかのように正しく聞こえないので、なぜあなたが継続的に更新する必要があるのかについて、より多くの情報を聞きたいと思います。 – user2478398
@ user2478398ポケモンのように、プレーヤーは常に中央にありますが、歩いているときはプレーヤーの周りのすべてが動きます。私のゲームはあなたが撃つことができる以外は似ています。弾丸はマウスに行きます。プレイヤーがカーソルを移動せずに1つの地点に置くことを決定し、矢印キーを使用して攻撃すると、xとyの座標は最初のクリックからの古いものなので、ターゲティングシステムは機能しません。 –