2

ゲームの開発を始めており、マウスが長方形の内側にあるかどうかを確認できるようにする必要があります。長方形に .contains を使用しようとしましたが、動作しないようです。貼り付けます以下の私のコード、どんな助けでも大歓迎です! :)

public boolean isMouseOver(GameContainer gc){
    r = new Rectangle(getX(), getY(),getWidth(),getHeight());
    Input input = gc.getInput();
    xpos = input.getMouseX();
    ypos = input.getMouseY();
    return r.contains(xpos, ypos);
}

これは私が使用しようとしている方法ですが、マウスが長方形の内側にあると false を返し続けます。明らかに、xpos、ypos、および長方形をさらに上に開始し、使用しようとしているクラスの update メソッドでメソッドを呼び出しました。

4

3 に答える 3

3

マウスには 2 つの点があります。x と y の位置です。

int mouseX = gc.getInput().getMouseX();
int mouseY = gc.getInput().getMouseY();

そして、長方形があります

Rectangle rec = new Rectangle( 100, 100, 200, 200 );

だから私たちはチェックすることができます

if ( mouseX >= rec.getMinX() && mouseX <= rec.getMaxX )   // check if X is within range
   && ( mouseY >= rec.getMinY() && mouseY <= rec.getMaxY) // check if y is within range

または、X 値が四角形の低い値よりも大きく、高い値よりも小さくなければならないことがわかったので、Y についても同じように、contains 関数を確認します。

contains(float xp, float yp, float xr, float yr, float widthr, float heightr)

xp - The x coordinate of the point to check
yp - The y coordinate of the point to check
xr - The x coordinate of the rectangle
yr - The y coordinate of the rectangle
widthr - The width of the rectangle
heightr - The height of the rectangle

だから私は言うだろう

contains( mouseX, mouseY, rec.getMinX(), rect.getMinY(), rec.getWidth(), rec.getHeight() )

おそらく、ここで何かがうまくいかなかったのでしょうか?

于 2013-07-12T07:24:18.340 に答える
0

Rectangle の境界とマウスの位置を表示しましたか?

Rectangle はコンポーネントに対して相対的であり、マウスは画面に対して相対的であると思います。

クラスを使用SwingUtilitiesしてポイント変換を行い、ポイントが同じコンポーネントに対して相対的であることを確認できます。

于 2013-06-21T15:07:28.270 に答える