如何检查鼠标是否在处理 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;
}
我想编写一个函数,如果鼠标在画布上,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;
}