getObjectsUnderPoint

我们知道,在AS3中,事件有了很大的改进,最明显的就是引用了事件机制和事件流。

对于事件的冒泡大家都不陌生了,这的确是个好东西,有时候很方便,但是有时候也有些麻烦。

这里我们不重点说冒泡了,说一个例子,也是大家经常会遇到的。

比如说,舞台上某个地方,重叠了很多MC,这个时候,我们想找到其中我们需要的MC,怎么办?

可以冒泡,但是,对于多个单独的MC,冒泡就不行了。

这时,我们可以用一个函数:getObjectsUnderPoint,真的是超级好用!

看字面的理解,这个函数是获得某个坐标下所有的object实例,这里的object指的是DisplayObject,也就是显示元件,通常说的是shape

我们看一个例子:

 

 1 var targetList:Array = stage.getObjectsUnderPoint(new Point(mouseX,mouseY));
 2 //获得当前鼠标坐标下的所有显示元件,注意返回是一个数组哦
 3     for each (var theTarget:DisplayObject in targetList)
 4     {
 5 //遍历这个数组
 6     if (theTarget.parent.name == "BACK")
 7         {
 8                 var mc:MovieClip = theTarget.parent.parent as MovieClip;
 9            ...                    
10               }
11           }

 

 

这个例子很简单,但是,获得了大量的DisplayObject,怎么找到我们想要的呢?还记得name属性么?对了,就是这个,我们在添加元件的时候,记得给一个唯一的name就可以了

theTarget.parent.name ,也可以theTarget.name,一个是获得父对象name,一个是获得当前的name,根据需要选择

 var mc:MovieClip = theTarget.parent.parent as MovieClip;
这句是不是有些奇怪?

因为我们获得的是一个DisplayObject,所以,如果是某个MC派生类,或者实例的时候,我们需要用as转化一下,这样,我们就可以使用这个类中的一些方法,也可以获得大的MC,通过getChildByName来进一步获得里面的元件

转载于:https://www.cnblogs.com/bulolo/archive/2012/10/09/2717472.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值