2d Graphics - 精灵点击检测

时间:2011-08-12 12:09:40

标签: android graphics 2d

我正在开发一个小应用程序,它使用精灵,使用画布和简单的drawBitmap渲染。

用户触摸屏幕后,我需要知道点击了哪个精灵。 当我将每个精灵视为具有图像宽度和高度的矩形时,我能够实现这个目标。 但是,有些精灵只占整个矩形的一小部分,我想忽略用户在矩形内部而不是在内部形状上点击。

任何想法可能是一个很好的方法吗?

编辑:为了更清楚,让我说我有一个大小为200x200的精灵,精灵是从上面飞机的图像,飞机有长长的翅膀。由于机翼很长,精灵中会有很多“死”区域。 我想检测用户何时只点击飞机本身,而不是“死”区域。

感谢。

2 个答案:

答案 0 :(得分:2)

您必须检查绘制Bitmap的区域,而不是另一个矩形。只需将每个精灵(可能有不同的大小)视为一个矩形,其宽度和高度等于精灵的宽度和高度。

既然你详细阐述了你的问题,我会再提出一个建议。

当您检测到精灵点击时,只需通过Bitmap.getPixel()功能检查(在Bitmap区域内)当前像素。然后,您可以轻松检查指定位置的颜色是否是您感兴趣的 ,否则您可以跳过检测触摸。

答案 1 :(得分:2)

您需要创建位图中所有像素的二维数组。将像素屏蔽为0(透明)或1(具有颜色)。然后当您在矩形内部单击时,您只需要获得矩形内的宽度偏移和高度偏移。这为您提供了映射到像素数组的索引。然后检查并查看像素数组中的索引是否包含值1。如果是这样,那么您点击了实际图像。这有意义吗?