マウスを押している間も位置を更新するにはマウスが必要です。これはこれまでの私のコードで、私はここから問題を解決するためにどこに行くのかわかりません:マウスが押されている間、Javaはマウス入力を更新しませんか?
このコードは私のメインループで実行され、MouseはMouseListenerとMouseMotionListenerを実装したクラスですマウス座標の位置とどのマウスボタンが押されたかを示します。
ラップトップを使用しているとき(ラップトップを使用しているかどうかはわかりませんが)、どちらのボタンが押されているかがわかりますが、マウスを動かすと(ボタンを押したまま)マウスがどこにあるかをレンダリングしている白い四角形は、凍ってしまい、マウスで動かない。私はマウスを解放しなければならないし、マウスの位置がどこに戻ってくるのか再びそれを移動する必要があります。ここで何が起こっているのか、それを修正する方法は不明です。私はthechernoからYouTubeでjavaのゲームのチュートリアルをたどってきました。
Graphics g = bs.getDrawGraphics(); // bs is a bufferstrategy
{
g.DrawImage(image, 0, 0, getWidth(), getHeight(), null); // my game image
g.setColor(Color.WHITE);
g.setFont(new Font("Verdana", 0, 20));
g.fillRect(Mouse.getX() - 32, Mouse.getY() - 32, 64, 64);
g.drawString("Button: " + Mouse.getButton(), 10, 30);
}
g.dispose();
bs.show();
マイマウスクラス
package rain.input;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
public class Mouse implements MouseListener, MouseMotionListener {
private static int mouseX = -1;
private static int mouseY = -1;
private static int mouseB = -1;
public static int getX() {
return mouseX;
}
public static int getY() {
return mouseY;
}
public static int getButton() {
return mouseB;
}
@Override
public void mouseDragged(MouseEvent e) {}
@Override
public void mouseMoved(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
mouseB = e.getButton();
}
@Override
public void mouseReleased(MouseEvent e) {
mouseB = -1;
}
}
マウスイベントの処理にはどのような方法を使用していますか? –
もっと多くのコード(実際のマウスイベントコードなど)が役立ちます。 – Moira
@ PavloViazovskyy私のMouseクラスを追加しました。 – Vince