鼠标穿透(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的所有对象,根据自己的业务逻辑进行相关的处理。

        }
}
posted @ 2011-12-28 10:28  lovecd  阅读(465)  评论(0编辑  收藏  举报