-1

可能重复:
MouseListener 需要与许多对象 Java 交互

我有一个程序,在屏幕上绘制了许多图像以及其他内容。我有一个鼠标监听器,但是检测屏幕上点击了什么的最有效方法是什么?因为如果我有一个100px x 50px从点开始的图像@ 500, 300

对于屏幕上的每个图像,我不能说if (x > 500 && x < 600)等等?

感谢您的任何帮助

4

1 回答 1

1

有效解决此类问题的一种方法是使用QuadTree,它是一种递归细分屏幕的数据结构。这使您可以仅检查大致位于屏幕右侧的图像。

或者更简单的方法是将屏幕简单地细分为四分之一或十六分之一,并将每个图像与其覆盖的屏幕部分“注册”。如果您有任何相对于屏幕尺寸的大图像,这可能不太有效。

这可能仅在您的许多图像是静态的情况下才有效,因为四叉树需要在图像移动时重新计算。

您可能会发现简单地检查每张图像实际上已经足够快了——您没有说您有多少张图像,或者目前检查所有图像需要多长时间......

于 2012-11-03T20:41:54.143 回答