TOUCH事件的使用疑问

我正在做一个连线问题,在节点A上点击后拖出一条线,然后在节点B上释放,然后问题出现了。
我在A和B上面添加的触摸响应事件,TOUCH事件中的TOUCH_CANCEL 或者是TOUCH_END 所响应的都是节点A。也就是说无法判断我是在哪个节点上释放的触摸。
我测试后发现TOUCH_END 相当于一个click事件,而测试MOUSE_UP鼠标弹起,也是一个click事件。也就是说,只有在这个目标上按下并弹起才会响应,而不是我以为的是在鼠标释放的时候触发——例如:A节点响应按下,然后拖移到B节点上响应弹起。

求大神给个解决思路!是少了一个事件吗?

用坐标判断试试

触摸事件当中有一个很重要的概念,是触点跟踪,当一个触点在 A 上被按下的时候,这个触点就属于节点 A 了,那么按下事件和后续的事件都是和 A 相关的:

  • TOUCH_START:在 A 上按下
  • TOUCH_MOVE:在 A 上移动
  • TOUCH_END:在 A 上放开
  • TOUCH_CANCEL:在 A 外面放开

所以一个属于 A 的触点无法触发在 B 上的 TOUCH END 事件,你需要寻找其他思路解决这个问题

根据你的应用层需求,是要连接 A - B,那实际上操作面应该是所有可以画线的区域,你应该在这个区域上注册触摸事件(这个区域可以是一个不包含渲染元素的空节点)。连线过程中,你需要根据起始点和结束点分别对比你的可连接节点列表,找到起点节点和终点节点,最后做你需要的操作

1赞