lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7795|回复: 7
打印 上一主题 下一主题

关于多层子对象点击事件疑惑

[复制链接]

3

主题

0

好友

37

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2016-11-25 10:53:57 |只看该作者 |倒序浏览
本帖最后由 xionchan 于 2016-11-25 11:54 编辑

一个LSprite(如:layer)内有N 个 对象,子对象点击事件可以通过这样方式实现:

layer.addEventListener(LMouseEvent.MOUSE_DOWN,function(e){
obj = e.target;
//obj即获取的子对象。
……
});


如果与layer平级同类型的对象下的子对象事件
必须用循环来实现吗?(注:parent为这些子对象的父对象)

如:

for(var i=0; i<parent.childList.length;i++;){
//parent.childList【i】实际上等于 layer1,layer2,layer3…………
  parent.childList【i】.addEventListener(LMouseEvent.MOUSE_DOWN,function(e){
   obj = e.target;
   //obj即获取的子对象。
   ……
  });
}



http://lufylegend.com/demo/test/103.html
如这个例子,
这些拖拽对象都在rect1容器内,如果还有rect2,rect3容器内有类似的对象,也需要有拖拽事件呢?
有没有更好的解决办法统一处理?

回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

沙发
发表于 2016-11-25 11:22:17 |只看该作者
鼠标事件看你加在哪里了
http://lufylegend.com/api/zh_CN/ ... property_MOUSE_DOWN
这里有解释

  1. currentTarget        当前正在使用某个事件侦听器处理 Event 对象的对象。等同于 clickTarget。
  2. target        指针设备下的 LInteractiveObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。
复制代码
你说的那个链接,里面之所以用了event.target而不是event.currentTarget,是因为event.currentTarget是rect1,而event.target就是点击到的rect2
我不知道你说rect3和这个有什么关系,如果rect3也是rect1的子对象的话,那也只需要监听rect1的鼠标事件,然后通过event.target获取就可以了
不回答与技术和引擎不相关的问题
回复

使用道具 举报

3

主题

0

好友

37

积分

士兵

Rank: 1

板凳
发表于 2016-11-25 11:51:55 |只看该作者
本帖最后由 xionchan 于 2016-11-25 12:07 编辑

rect2,rect3和rect1是同级的,里面的对象差不多,都有n个子对象。

rect1,rect2,rect3,……的父对象为 parent

我现在是要监听 rect1,rect2,rect3 ……中所有子对象点击事件

是不是只能通过 循环来实现?

for(var i=0; i<parent.childList.length;i++;){

//这里的 parent.childList【i】实际上就等于   rect1,rect2,rect3 ……
  parent.childList【i】.addEventListener(LMouseEvent.MOUSE_DOWN,function(e){
   obj = e.target;
   //obj即获取的子对象。
   ……
  });
}



也就是我如何获取  parent 对象所有“孙”对象的点击事件!
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

地板
发表于 2016-11-25 12:33:09 |只看该作者
xionchan 发表于 2016-11-25 11:51
rect2,rect3和rect1是同级的,里面的对象差不多,都有n个子对象。

rect1,rect2,rect3,……的父对象为  ...

那不是一样吗?
你给rect1,rect2,rect3分别加一个鼠标事件,然后做法不就跟上面的例子一样了吗?
不回答与技术和引擎不相关的问题
回复

使用道具 举报

3

主题

0

好友

37

积分

士兵

Rank: 1

5#
发表于 2016-11-25 13:23:32 |只看该作者
rect1,rect2,rect3  ……这个是不固定的,  也就是只能循环 获取这些对象再加侦听事件咯。
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

6#
发表于 2016-11-25 14:51:14 |只看该作者
xionchan 发表于 2016-11-25 13:23
rect1,rect2,rect3  ……这个是不固定的,  也就是只能循环 获取这些对象再加侦听事件咯。 ...

如果对象不是太多的话,每个子对象加个点击事件更简单
具体案例具体分析,关键是弄明白原理,
剩下的就是自己发挥了
不回答与技术和引擎不相关的问题
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

7#
发表于 2016-11-25 14:51:14 |只看该作者
xionchan 发表于 2016-11-25 13:23
rect1,rect2,rect3  ……这个是不固定的,  也就是只能循环 获取这些对象再加侦听事件咯。 ...

如果对象不是太多的话,需要判断的每个子对象加个点击事件更简单
具体案例具体分析,关键是弄明白原理,
剩下的就是自己发挥了
不回答与技术和引擎不相关的问题
回复

使用道具 举报

3

主题

0

好友

37

积分

士兵

Rank: 1

8#
发表于 2016-11-27 15:48:51 |只看该作者
lufy 发表于 2016-11-25 14:51
如果对象不是太多的话,需要判断的每个子对象加个点击事件更简单
具体案例具体分析,关键是弄明白原理,
...

谢谢lufy!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-8 11:54 , Processed in 0.047709 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部