私はJavaでゲームを作っており、マウス入力を追加しました。ここに私のコードです。Java - マウスをクリックすると、tick()ループによって複数のアクションが発生します
public class MouseInput implements MouseListener, MouseMotionListener {
public static boolean leftPressed;
public static boolean rightPressed;
public MouseInput(){
}
public void tick(){
if(leftPressed){
System.out.println("left pressed");
}
}
@Override
public void mousePressed(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1){
leftPressed = true;
}else if(e.getButton() == MouseEvent.BUTTON3){
rightPressed = true;
}
}
@Override
public void mouseReleased(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1)
leftPressed = false;
else if(e.getButton() == MouseEvent.BUTTON3)
rightPressed = false;
}
ゲッター、セッター、抽象メソッドなど、この質問に関係しない余分なコードをすべて削除しました。
私はこれを実行すると、私は私が見るものをクリック
left pressed
left pressed
left pressed
left pressed
left pressed
left pressed
数倍です。 これはtickメソッドの内部にあり、毎秒60回更新されるためです。私が唯一にのmousePressedとのmouseReleased方法に変更することができ、それ1
left pressed
どうもありがとう
をreleted空のメソッドを持っているMouseAdapterから継承することができる空のメソッドの実装を避けるために
。それはどこから呼ばれていますか? – hotzst
と 'tick()'メソッドの目的は何ですか? –
上記の@TimothyTruckleの言及、tickメソッドの目的、GUIとその現在の観察された、そして望ましい動作についての背景など、あなたの質問から重要な詳細を除外しました。私たちの知識の隙間を埋めることで私たちを助けてください。 –