在Processing 3中如何检查鼠标是否在画布上?

时间:2019-03-09 21:09:53

标签: java processing

我想编写一个函数,如果鼠标在画布上,则返回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可以获取窗口的位置,但这提供了包括顶部栏的坐标,而我希望画布在该窗口内的位置。

1 个答案:

答案 0 :(得分:3)

使用布尔变量跟踪当前鼠标悬停在画布上的状态,覆盖PApplet提供的 mouseEntered() mouseExited()方法:

boolean mouse_over = false;

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

@Override
public void mouseExited() {
    mouse_over = false;
}
相关问题