出现概率:100%
引擎版本:2.3.2
重现步骤:
1.打开单点触摸(关闭多点触摸): cc.macro.ENABLE_MULTI_TOUCH = false
2.对某个全屏大小的节点注册start、end、move三类点击事件:
this.node.on(cc.Node.EventType.TOUCH_START, this.startTouch, this)
this.node.on(cc.Node.EventType.TOUCH_MOVE, this.moveTouch, this)
this.node.on(cc.Node.EventType.TOUCH_END, this.endTouch, this)
3.设定一个行为来关闭点击事件,比如定时(关键目的是在move过程中off掉监听):
setTimeout(() => {
this.node.off(cc.Node.EventType.TOUCH_MOVE, this.moveTouch, this)
this.node.off(cc.Node.EventType.TOUCH_START, this.startTouch, this)
this.node.off(cc.Node.EventType.TOUCH_END, this.endTouch, this)
}, 3000);
4.保持touch_move状态,直到监听被移除,bug就会出现,之后所有触摸事件都不会被响应
5.吐槽:ccc的touch_move事件真的不好用,因为A节点添加touch_move事件后,touch事件即使被B节点捕捉,A节点的touch_move仍然响应,建议添加一个touch_hover事件,让A节点只在移动发生在自己身上时才响应
6.附上一个demo,请官方大大解决这个问题……TouchBugDemo.zip (884.4 KB)
刚升了2.3.3,2.3.3已经解决了这个bug,本帖关闭
请教下楼主,this.sprite.node.on(cc.Node.EventType.TOUCH_START,this.OnClickCloth,this); 不会被触发可能会是什么原因呢, 该sprite是动态添加的组件,添加完sprite和animation组件之后添加的事件,节点不在Canvas节点下面。
已经解决: 使用New出来的 node,有问题,不能捕获事件。