如何检查鼠标是否在处理 3 中的画布上?

How to check if mouse is over the canvass in Processing 3?

我想编写一个函数,如果鼠标在画布上,returns true,否则 false

我的解决方案基本上是这样的:

import java.awt.MouseInfo;

Point globalMouse;

boolean mouseOverCanvass() {
    globalMouse = MouseInfo.getPointerInfo().getLocation(); 

    boolean mouseInXRange = (canvass.X < globalMouse.X) && (globalMouse.X < canvass.X + width);
    boolean mouseInYRange = (canvass.Y < globalMouse.Y) && (globalMouse.Y < canvass.Y + height);

    if (mouseInXRange && mouseInYRange) {
        return true;
    } else {
        return false;
    }
}

问题是找不到拉票位。我发现 this solution 可以获取 window 的位置,但这提供了包括顶部栏的坐标,而我想要 window 中的画布位置。

覆盖PApplet提供的mouseEntered()mouseExited()方法,使用一个布尔变量来跟踪当前鼠标-超过-canvas 状态:

boolean mouse_over = false;

@Override
public void mouseEntered() {
    mouse_over = true;
}

@Override
public void mouseExited() {
    mouse_over = false;
}