【发布时间】:2013-02-15 03:33:06
【问题描述】:
我想对 png 图像和其他形状进行良好的性能命中测试。我真的不在乎它们是什么形状,因为使用这种技术在检查(而不是设置)时不会出现性能问题。
我打算将屏幕上的所有图像收集到辅助画布中,仅用于命中测试。对于绘制的每个图像,我将创建一个附加到该特定图像的新颜色。然后我把它们都画在画布上,每张图片都会有不同的填充颜色。
当我点击一个像素 (x, y) 时,它将获得颜色 (r, g, b)。每种颜色都映射到一个图像,因此我可以毫无错误地点击该图像(我不会浪费在查找该点击所击中的内容上)。
我知道它将被限制为 256*256*256=16 777 216 件,因为这些都是颜色,但我认为现在不会有问题...
所以我真正需要的是知道如何将这些填充颜色放在仅基于每个图像的可见像素的辅助画布上。
更新
正如您在右侧看到的那样,它是命中测试地图。因此,如果我点击黑色阴影 (c),我会立即知道我点击了蓝色框,无需任何其他计算。
其中一项改进是缓存 alpha 数据。还为每个图像实例重用相同的 alpha 数据(我们必须注意缩放和旋转......)。
谢谢
【问题讨论】:
-
其他碰撞检测测试有什么问题?
-
碰撞检测不会检查每个图像的每个像素是否被击中?对于每个大约 1000 像素的 > 1000 个图块来说,这太慢了。 (每次鼠标悬停 1000000 次检查将非常滞后)。我什至不知道我的想法是否可行,因为我在 15 分钟前就想到了......
-
嗯,这似乎是为 Flash 制作的。我需要的是一种在画布中为 html+javascript 绘制图像填充区域的方法