在处理 (2) 中,我目前正在创建一个类似 UML 风格的 Java 类图。类、接口等被表示为使用处理rect()
方法创建的矩形。为每个要显示的矩形创建一个类,存储有关它的信息,并使用display()
绘制矩形的方法。
为了实现放大和缩小此图表(以方便非常大或非常小的项目),我添加了代码,scale
每次鼠标滚轮滚入和滚出时都会更改一个变量。scale()
然后,每次绘制类矩形等时,代码都会使用 Processing 的方法。
我还试图检测这些矩形之一何时被鼠标悬停。目前,这是在表示矩形的类中使用以下代码完成的:
//Checks to see if a mouse X and Y (posX and posY) position is inside the rectangle.
public boolean positionCollides(int posX, int posY) {
boolean xCollides = false, yCollides = false;
if((centreX + (width/2) >= posX) && (centreX - (width/2) <= posX)){
xCollides = true;
}
if((centreY + (height/2) >= posY) && (centreY - (height/2) <= posY)){
yCollides = true;
}
if(xCollides && yCollides){
return true;
}
else{
return false;
}
}
在哪里mouseX
并被mouseY
输入该方法。请注意此代码中的centreX
和centreY
是第一次创建矩形时包含(ed)矩形中心坐标的变量。
但是,当我放大并将缩放应用于矩形的display()
方法时,鼠标悬停会中断 - 大概是因为这些东西显示在稍微不同的 X 和 Y 坐标上,并且它仍在检查旧的坐标。
有没有办法可以改变我的上述positionCollides
方法来帮助它处理缩放的结果?我怎样才能得到这个排序?
我试图通过将调用positionCollides
后的代码放在scale()
显示方法中(试图使 mouseX 和 mouseY 值也进行缩放),并将 mouseX 和 mouseY 乘以比例(即 0.9, 1.1) 尝试使它们达到正确的值。
也许有一种方法可以动态改变对象的 centerX 和 centerY?
感谢您阅读我的文字墙。
tl;dr - 如何检测鼠标指针是否在处理中缩放的形状/矩形内?