怎么获取触摸事件中的子节点

我在一个父节点上添加了一个脚本组件
this.node.on(cc.Node.EventType.TOUCH_START, function (event) {}, this);
点击子节点,在函数中使用event.target获取event.currentTarget获取的都是父节点,这两个属性有什么不同。
怎么才可以获取子节点呢

首先,event.target是第一个接收touch事件的node(也就是你添加监听的node,这里你是在父节点添加的touch监听),event.currentTarget是当前接收事件的target(因为有些事件会不断向父节点派送,这里也是在父节点触发的touch事件)

其次,你添加touch监听是在父节点的组件上添加的,所以触发事件的node是父节点

最后,获取子节点用node(父节点).getChildByName(“子节点名称”)

不知道能不能帮到你

1赞

嗯,谢谢你的解答。 看来要获取子节点得向子节点添加touch事件才行。不过

不过感觉还是有其他的问题,像是我在一个中间节点脚本组件里写向根节点添加touch事件,target是那个中间节点。但是我向中间节点的子节点添加touch事件,无论target还是currentTarget都是子节点.

看见最后一个this了吗?那就是target,你传的参数是哪个node(或者组件),event.target就是哪个node(或者组件)

你试试看,如果不行,你弄个简单的demo贴上了我帮你看看(虽然不一定看得懂:joy:

1赞

找到问题所在了,只有侦听了touch事件的对象才会收到事件发送吧,就好像我向父节点添加的TOUCH_END事件,但是子节点添加的只是TOUCH_START,根节点的target都会指向这个子节点

看事件咯,如果你触发的touch_end,那么target就是父节点,如果你触发的touch_start,target就是子节点咯

如果能有一个安卓一样的item点击就好点儿了,自己做一个坐标依据点击的话还要考虑到获得的点击范围的问题