node是一个slide同时监听"slide"和TOUCH_END事件,两个事件收到监听有先后顺序吗?我是希望先收到"slide"事件在触发touch_end,有时发现快速的滑动,就不能监听到touch_end。
我现在又发现不光是先后顺序问题,而是touch_end在快速滑动时,监听不到了。

slide事件是touchbegan和touchmove触发的
怎么会监听不到touch_end呢?感觉你是触发touch_cancel事件了吧~有demo?
this.slider_PowerBar.node.on(‘slide’, this.sliderCallback, this);
var Handle = this.slider_PowerBar.node.getChildByName(“Handle”);
Handle.on(cc.Node.EventType.TOUCH_END, this.onSliderTouchEnd, this);
Handle.on(cc.Node.EventType.TOUCH_CANCEL, this.onSliderTouchEnd, this);
只有在手机能重现,很快速滑动一下并且手指同时离开屏幕,进度条是正常滑动了,但是没有监听到TOUCH_END和TOUCH_CANCEL
我这应该不是出屏幕,就是快速滑动抬起了手,结束了触摸,但是如果是出屏不应该也能监听TOUCH_CANCEL么,但是TOUCH_CANCEL也没监听到。如果不快速滑动,正常速度滑动我这都是正常的。只有很快速滑动才有问题
我前面说得不对,改了,是触摸结束时,检测触摸结束点是否还在节点身上
你这代码哪来的?我测试的是3.0.0版本
这个就是我项目写的代码
我的代码有问题么?如果不在节点上我发的代码,TOUCH_CANCEL是不是应该能监听?
我觉得代码没问题,不知道为什么没触发touch_end或者touch_cancel
可能你点的时候没有点到Handle上面去,而是直接点到了Slide上面去,导致Handle的touch_began事件没有触发,所以不会触发touch_end或者touch_cancel,不然的话可能是引擎bug?
感觉我应该是点到了handle上的,要不我直接用slider来监听touch_end或者touch_cancel在试试?
如果touch_began点在handle上的话,slider的touch_end事件不会触发
嗯 所以如果touch_began在slider是不是进度条可以走,handle上的touch_end是不是也不能监听呢
调试的时候看一下源码
let sliderNode = this.node.getChildByName(“Canvas”)?.getChildByName(“Slider”);
if (sliderNode) {
let slider = sliderNode.getComponent(Slider);
sliderNode.on(SystemEventType.TOUCH_START, slider._onHandleDragStart, slider);
sliderNode.on(SystemEventType.TOUCH_MOVE, slider._onTouchMoved, slider);
sliderNode.on(SystemEventType.TOUCH_END, slider._onTouchEnded, slider);
}
这是我抄源码的,把handle的事件给slider也监听一下

