如果两个节点有重叠的部分,且都用on(cc.Node.EventType.TOUCH_START,…)监听触摸事件,那么重叠的部分只有上面的节点会响应事件。如果想动态判断,让下面的节点响应事件,该怎么做呢?谢谢。
谢谢回答。可能我没有说清楚,事件可以冒泡到父节点我知道,但是非父节点和兄弟节点重叠的话只有层级在上面的节点收到事件。你拿两个图重叠一半,一个on TOUCH_START cc.log(1)一个cc.log(2),浏览器里点一点就知道了。
是这样的,最上层的节点响应了事件以后,事件只会在它的节点树中传递。要做到你想要的效果,这两个节点都不应该注册 on 事件,可以在它们上面放一个事件代理节点,判断应该触发哪个节点的回调,然后再动态调用
好的,谢谢。
如果没有父子关系呢?
我发现cocos creator1.9的cc.Node.EventType.MOUSE_DOWN可以冒泡,而cc.Node.EventType.TOUCH_START就是不冒泡,我在Canvas这个根节点上能获得全屏的MOUSE_DOWN,却不能获得TOUCH_START,结果就是游戏只能在电脑上玩不能在手机上玩.TOUCH_START不冒泡的bug怎么解决.
theNode["_touchListener"].setSwallowTouches(false);
theNode是需要被穿透的节点
牛逼啊,这样的确好用, 2.4.3还可以用。
可惜单点触摸不支持
那不瞎了!~
对于这总特殊的,可以把要下层节点注册(其实就是持有这个节点对象)到上层节点,然后把对应事件直接转发到下层节点上去就行了
正解,2.4.6也可以的
请问一下,这个可以么,为什么我加了这句话还是不行呢?是两个node同级,上面那个node用on之后,再用theNode["_touchListener"].setSwallowTouches(false);这句话也没用啊?还是点击不了下面的
this.node._touchListener.setSwallowTouches(false)这个是用在上面的节点的
2.4.11好像不行了
先注册on 再设置
this.touchNode.on(cc.Node.EventType.TOUCH_CANCEL, this.sliderEnd, this);
this.touchNode["_touchListener"].setSwallowTouches(false);
是的,2…4.11 直接报错了
