1

マウスが作成したウィンドウの外に出たかどうか、またどちらの側から出たかを知るにはどうすればよいですか。私は古典的な卓球ゲームを作っていますが、マウスを速く動かしすぎると、「もの」がいくつかのピクセル内にとどまります。終了したウィンドウの端に移動したいと思います。

private class MouseMotion extends MouseAdapter{
    public void mouseMoved(MouseEvent e) {
        super.mouseMoved(e);
        int x = e.getX();
        p1.move(x);
    }
}

そして移動機能

public void move(int x) {
    if (x < 0  ) {
        this.x = 0;
    }else if(x+width > Main.screenSize.width - 1){
        this.x = Main.screenSize.width - width - 1;
    } else {
        this.x = x;
    }
}

マウスが窓の外にあるかどうかを知る方法を知る必要があるだけです。

4

4 に答える 4

4

を確認してくださいMouseListener.mouseExited(MouseEvent)

于 2013-08-11T09:10:32.770 に答える
2

あなたはこれを見たいと思うかもしれません:

Point mouse = MouseInfo.getPointerInfo().getLocation();

これは、ポインタが画面上にあることを示しています。アプリケーションにフォーカスがあるかどうかは関係ありません。ポインタがウィンドウの上にあるかどうかに関係なく。

于 2013-08-11T09:32:33.523 に答える
0

これを実行する場所に配置して、MouseMotion クラスを削除してみてください。「c」は、p1 が描画される JComponent です。コードでそのオブジェクトを何と呼んだかわかりません。「running」は、true に設定されたブール値です。このコードが実行されると、'running' が false に設定されるまで、p1 はマウスに従って移動します。

new Thread(()->{
    while(running) {
        p1.move(MouseInfo.getPointerInfo().getLocation().getX()-c.getLocationOnScreen());
    }
}).start();
于 2014-06-14T15:48:49.593 に答える