我有一个程序,在屏幕上绘制了许多图像,以及其他内容。我有一个鼠标监听器,但是检测屏幕上点击内容的最有效方法是什么?因为如果我从点100px x 50px
开始有图像500, 300
@,
对于屏幕上的每个图像,我不能说if (x > 500 && x < 600)
等等。
感谢您的帮助
答案 0 :(得分:1)
有效解决此类问题的一种方法是使用QuadTree,这是一种递归细分屏幕的数据结构。这使您只能检查大致在屏幕右侧的图像。
或者更简单的方法是简单地将屏幕细分为四分之一或十六分之一,并将每个图像与其覆盖的屏幕部分“注册”。如果您有相对于屏幕尺寸的任何大图像,这可能效果较差。
如果您的许多图像都是静态的,这可能只会有效,因为四叉树需要在图像移动时重新计算。
你可能会发现,简单地检查每一张图片实际上是足够快的 - 你没有说你有多少张图片,或者目前检查它们的时间有多长......