【发布时间】:2013-07-21 08:24:42
【问题描述】:
我只是在 AS3 中添加了一个精灵:
Sprite myspr = new Sprite();
myspr.addChild(mybitmap);
addChild(myspr);
然后我添加了一个事件。我做了 hitTestPoint 来检查鼠标是否在我的精灵上。
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseCheck);
private function mouseCheck(evt:MouseEvent):void {
var xx:int = stage.mouseX;
var yy:int = stage.mouseY;
if(myspr.hitTestPoint(xx, yy, true)) {
...
// I'm checking mouse over here.
}
evt.updateAfterEvent();
}
问题是:当鼠标到达完整的边界框时,hitTestPoint 为真。但只有当鼠标出现在透明的等距精灵上时,它才应该是真的。
有解决办法吗,先谢谢了。
【问题讨论】:
-
图片+1。我稍后会读你的问题
-
myBitmap 是图像吗?我认为 shapeflag 适用于本质上为矢量的形状,例如使用 Flash Professional 中的工具绘制的形状,使用 beginFill、lineTo 等图形指令绘制的形状。
-
@catholicon mybitmap 是一个位图对象。它的 bitmapData 是一个透明的 png。
-
我没有使用过 Flash Professional,但我认为您可以将图像导入 Shape 中。该形状可能需要一些编辑,但 shapeFlag 应该可以工作。顺便说一句,如果它是一个简单的形状,那么绘制它会更简单。
-
@catholicon 还有其他解决方法吗?这是不可能的,因为我是通过 actionscript3 LoaderMax 加载图像,而不是 flash。它是一个巨大的精灵数组,不仅仅是一个精灵。这些精灵创建了一个等距的土地,就像在等距城市管理游戏中一样。我想检测鼠标悬停在哪个精灵