Java Read Raw Mouse Input

后端 未结 1 1596
长情又很酷
长情又很酷 2021-01-24 22:15

I\'m looking for a way in Java to read in raw mouse input and not just the event listeners. I\'ll tell you what I\'m doing. Essentially, there is a game where if you move the mo

相关标签:
1条回答
  • 2021-01-24 23:00

    A little code might make the situation clearer, but here's what you can do.

    While there are a number of APIs (LWJGL's Mouse interface, as one example) that allow you to directly poll the mouse position, it sounds like overprogramming in your case. First, keep a private field with a reference to that last mouse position. We'll call it x here.

    Use a MouseMotionListener, and have it call the same method from mouseMoved and mouseDragged. That method should look something like this.

    void controlMethod(MouseEvent event) {
        int newX = event.getXOnScreen();
        int dx = this.x - newX;
        if(dx > 0) **D Key Event**
        else if(dx < 0) ***A Key Event**
    
        x = newX;
    }
    

    That should do the job for you. The only thing you might want to look out for is the mouse straying off of the MouseMotionListener's area; but there are always ways around things like that, and it seems a bit tangential.

    As a final note, if you end up with wild swings in mouse control at the beginning of your game loop, consider setting the class field x to an Optional, and use Optional.ifPresent(...) for the dx logic. This will also protect you from data nullification, such as from a focus loss, and I recommend making it a practice.

    Best of luck!

    0 讨论(0)
提交回复
热议问题