【发布时间】:2014-10-13 15:09:34
【问题描述】:
我目前正在使用此代码检查鼠标的 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 个按钮之一上?
谢谢
【问题讨论】:
-
除非
getX()和getY()很慢,否则我认为这段代码不会减慢任何速度。 -
我建议您查看k-d tree 的分区逻辑,尽管只有四个按钮可能并不会产生太大的影响。正如@JeanLogeart 所说,这真的不应该减慢任何速度,除非每次鼠标更新都会多次调用 lot 或
get.()真的很慢。您可以通过仅在条件句之前调用一次getX()和getY()并将它们存储到本地来稍微提高性能,而不是每次调用它们最多 8 次(大多数情况下)。 -
你如何处理这个结果?如果您在事件调度程序线程中处理此结果,这可能会使您的程序响应缓慢并显得滞后。
-
您使用的是 SWT 还是什么?在 SWT 中,您有 this
-
您看到了多少减速?多久调用一次此方法(实际而不是预期),getX 和 getY 的快/慢?
标签: java performance