我目前正在使用此代码检查鼠标的x和y坐标,看它是否与我的任何按钮一致。
if (e.getY() > 204 && e.getY() < 280) {
if (e.getX() > 190 && e.getX() < 525) {
selected = 1;
}
} else if (e.getY() > 322 && e.getY() < 397) {
if (e.getX() > 231 && e.getX() < 481) {
selected = 2;
}
} else if (e.getY() > 439 && e.getY() < 512) {
if (e.getX() > 271 && e.getX() < 442) {
selected = 3;
}
} else if (e.getY() > 560 && e.getY() < 634) {
if (e.getX() > 282 && e.getX() < 425) {
selected = 4;
}
} else {
selected = 0;
}
它可以100%运行,但它似乎会慢慢减慢我的程序。有没有更有效的方法来检查我的鼠标是否超过我的4个按钮之一?
由于
答案 0 :(得分:3)
该代码中唯一缓慢的部分可能是getX()
和getY()
方法。 if
逻辑不应该慢慢减慢你的程序。
尝试使用变量而不是调用函数:
final int x = e.getX();
final int y = e.getY();
// + same logic
答案 1 :(得分:0)
您应该使用您在需要时调用的private void updateMouse()
之类的私有方法,然后将局部变量放在方法中存储getter方法int x = e.getX()
和int y = e.getY()
,这样它就会只有在您调用方法updateMouse
getX()
和getY()
位置时更新,您还可以节省调用getX()
和getY()
所需的效率。< / p>
然后将代码放入其中,如下所示:
private void updateMouse()
{
int x = e.getX();
int y = e.getY()
**** your if statement here
}
现在,您将能够在特定时间运行它,例如每10帧,而不仅仅是连续的。 这样可以节省一些效率。
(抱歉我的英语不好)