Creator v2.0.1 问一个 EventType.TOUCH_XXX 的问题。

为了实现Tips功能,我为一个节点添加了如下的监听:

ndTarget.on(EventType.TOUCH_START, this.ShowTip, this);
ndTarget.on(EventType.TOUCH_MOVE, this.MoveTip, this);
ndTarget.on(EventType.TOUCH_END, this.HideTip, this); // 在目标节点区域内 TOUCH_MOVE 后再抬起就不会触发了,不知道是不是bug…
ndTarget.on(EventType.TOUCH_CANCEL, this.CancelTip, this); // 在目标节点区域内 TOUCH_MOVE 时也会触发这个事件… 不知道为什么…

但遇到了注释所描述的问题(运行环境是浏览器)。

ndTarget 的结构也很简单,本身就是个 Node,
其下有两个子节点,一个挂有 Sprite 组件的Tips背景,一个是挂有 RichText 组件的Tips富文本。

以下是API的解释:

TOUCH_END String 当手指在目标节点区域内离开屏幕时。

所以按道理,在目标节点区域内即使 TOUCH_MOVE 后再抬起也应该触发啊。

谢谢提问,不过这个是设计如此的,下面是相关描述

我遇到的问题,详细过程是这样的:
我在 ndTarget 上触发了 TOUCH_START(鼠标按下不抬起),
然后紧接着在 ndTarget 区域内移动(鼠标按下不抬起并移动。注意,是区域内)、触发了 TOUCH_MOVE(在这过程中同时也会触发 TOUCH_CANCEL,这个就有点奇怪了),
然后抬起鼠标,按道理,鼠标始终未离开 ndTarget 所在的区域,应该触发 TOUCH_END 才对,但实际上没有。

原因猜测:
在上述过程城中,或许是不应该触发的 TOUCH_CANCEL 事件,导致了 TOUCH_END 没有被触发,
因为 TOUCH_CANCEL 的触发条件。

如果上述过程中,没有移动而是直接按下并抬起鼠标,
是会正常先后触发 TOUCH_START 和 TOUCH_END 的。

总的看来,我还是认为这个是bug,因为实际的触发情况和你贴出来的相关描述(文档上也是这么写的)是不符的。

我测了一下你的问题,并没有发现你所遇到的问题,很有可能是你的节点尺寸设置的问题吧。。。Test9_19.zip (475.3 KB)

看了你给的demo,确实是正常的,我自己也再写了个尝试了一下,也是正常的。
经过和项目的仔细对比,发现了不同,下面是复现问题的demo(多了个 ScrollView):Test09_20.zip (597.7 KB)
label的显示太快了,还是直接看控制台。

这个是正常表现
Cancel Inner Event 勾选了之后会停止 Content 内部的监听事件,因此你会收到 Cancel 。

1赞

soga~ 感谢大佬回复解惑!:slightly_smiling: