2015-03-09 2 views
0

, поэтому я создаю java-игру, и вот мои щелчки мыши обнаруживаются, но mouseMoved не запускается вообще. В методе есть оператор печати, который никогда не запускается. Я действительно застрял, потому что, поскольку клики регистрируются по всему окну, не должно быть ничего плохого в движении мыши.В Java, мой MouseMotionListener и MouseListener обнаруживает клики, но не движение

Является ли мышь зависимой от чего-либо еще, потому что я действительно не знаю, что вызывает это.

Спасибо.

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 getB(){ 
     return mouseB; 
    } 



    public void mouseMoved(MouseEvent e) { 
     System.out.println("Mouse Moved"); 
     mouseX = e.getX(); 
     mouseY = e.getY(); 
    } 

    public void mouseEntered(MouseEvent e) {} 

    public void mouseExited(MouseEvent e) {} 

    public void mousePressed(MouseEvent e) { 
     mouseB = e.getButton(); 
     System.out.println(e.getX() + " " + e.getY()); 
    } 

    public void mouseReleased(MouseEvent e) { 
     mouseB = -1; 
    } 

    public void mouseDragged(MouseEvent e) {} 
    public void mouseClicked(MouseEvent e) { 

    } 
} 

Вот мой конструктор игр, который инициирует все.

public Game(){ 
     //cCursor(); 

     screen = new Screen(WIDTH, HEIGHT); 
     mouse = new Mouse(); 
     keys = new Keyboard(); 
     //level = new RandomLevel(64, 64); 
     level = Level.spawn; 
     TileCoord pSpawn = new TileCoord(20,66); 
     player = new Player(pSpawn.x(), pSpawn.y(), keys); 
     player.init(level); 

     addKeyListener(keys); 
     addMouseListener(mouse); 
    } 
+1

Не полагайтесь на 'static', это НЕ механизм связи между объектами – MadProgrammer

+0

Хорошо, как вы рекомендуете, чтобы я реализовал мышь для использования в моих классах и объектах, я на самом деле не использовал мышь, которая часто используется в моих java-играх и приложениях, поэтому у меня нет большого опыта работы с лучшим способом вещи. – Meeesh

+1

Сосредоточьте свои усилия на едином взгляде на возможное, где все входы могут быть направлены; используйте модель, которая может обновляться и наблюдаться или запрашиваться – MadProgrammer

ответ

3

MouseMoitionListener является другой слушатель MouseListener и должен быть зарегистрирован отдельно ...

Start, добавив вызов addMouseMotionListener

addMouseListener(mouse); 
addMouseMotionListener(mouse); 

Взгляните на How to Write a Mouse Listener для более подробной информации

Смежные вопросы