鼠标穿透(flex实现)
问:一个面板上有许多的可是对象,有些对象的部分是透明的,当各种对象叠加时,需忽略透明的部分而直接选中下面的对象。如何使用flex的API来实现鼠标穿透。
答:使用hitTestPoint(x:Number, y:Number, shapeFlag:Boolean):Boolean
计算显示对象,以确定它是否与 x 和 y 参数指定的点重叠或相交。x 和 y 参数指定舞台的坐标空间中的点,而不是包含显示对象的显示对象容器中的点(除非显示对象容器是舞台)。
参数意思:
x:要测试的此对象的 x 坐标;
y:要测试的此对象的 y 坐标;
shapeFlag:(default = false) — 是检查对象 (true) 的实际像素,还是检查边框 (false) 的实际像素。
返回值:
如果显示对象与指定的点重叠或相交,则为 true;否则为 false。
实例代码:
var num:int = page.numChildren;//page表示当前的面板
for(var i:int=0; i<num; i++)
{
// 鼠标穿透
var child:* = page.getChildAt(i);
if(child.hitTestPoint(child.stage.mouseX, child.stage.mouseY , true))
{
//这里将得到鼠标点击的point的所有对象,根据自己的业务逻辑进行相关的处理。
}
}