2017-03-21 11 views
0

マウスを押している間も位置を更新するにはマウスが必要です。これはこれまでの私のコードで、私はここから問題を解決するためにどこに行くのかわかりません:マウスが押されている間、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; 
    } 
} 
+2

マウスイベントの処理にはどのような方法を使用していますか? –

+0

もっと多くのコード(実際のマウスイベントコードなど)が役立ちます。 – Moira

+0

@ PavloViazovskyy私のMouseクラスを追加しました。 – Vince

答えて

0

ボタンを押しながらマウスの座標を取得するにはmouseDragged(MouseEventのE)メソッドを使用します。

@Override 
public void mouseDragged(MouseEvent e) { 
    mouseX = e.getX(); 
    mouseY = e.getY(); 
} 
関連する問題