高效的不规则位图命中区域

rid*_*rid 2 flash actionscript actionscript-3

我有一个Flash项目,必须显示大量不规则形状的位图(大约10000),我想知道鼠标当前的位图.如果鼠标位于位图的透明部分上,则不应将其视为鼠标悬停.

一种方法是计算命中区域,然后用Sprite包含位图的另一个位图替换每个位图,用计算的命中区域替换另一个位图Sprite,然后设置hitArea属性.但这非常低效,结果完全无法使用.

最有效的方法是什么?

Sea*_*ara 6

在容器上试试这个:

var hits:Array = getObjectsUnderPoint(new Point(mouseX, mouseY));
if(hits.length > 0)
{
    var bitmap:Bitmap = hits[0] as Bitmap;
    var color:uint = bitmap.bitmapData.getPixel32(bitmap.mouseX, bitmap.mouseY);
    if(color >>> 24 > 0)
    {
        trace('hit: '+bitmap);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果位图重叠,则迭代hits.您还可以设置透明度的阈值.