双指捏合事件,总会触发单指事件

测试代码很简单:

this.canvas.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMoveCallback, this, true)

onTouchMoveCallback(event:cc.Event.EventTouch) {
let touches = event.getTouches();
if (touches.length >= 2) {
console.error(“双指操作”)
}else{
console.error(“单指操作”)
}
}

结果是两指手指操作的时候,单指操作log也有非常多。

@panda

不知道你解决了没有,我的也是触摸事件获取不了两个坐标位置,我解决的办法是用第一次点击和第二次点击分别获取两个坐标位置

我的好像不是这个问题,是只要双指按下,总会出现单指事件,即使双指一直按着,也会出现单指事件

那自己做个手指计数?

是不是有一个手指没有移动?楼主最后如何解决的?

楼主解决了吗?有什么解决思路吗?一样遇到了这个问题~

一般这个要在start判断,设置状态量,然后再再move判断

start里永远只有单个的touch点,双指也是单个,不太懂start里怎么判断单指或双指

估计是你以为是同时按下,但其实两个手指按下有间隔,所以有打印单指事件,这种应该还要判断移动超过多少像素

你看看这个https://mp.weixin.qq.com/s?__biz=MzI4ODEyNTU5Mw==&mid=2651588646&idx=1&sn=f766631ff7577a7dd40f979bcf48daac&chksm=f03b8fd0c74c06c66ac0728d6752981e0531b817b541410b8f03e60618ec17c820cc5475c4b5&token=740627131&lang=zh_CN#rd

image
image

我再试试,感谢感谢:pray:

你这个是cocos哪个版本呢?2.4版本的event对象里没有getAllTouches这个方法,只有getTouches,在start里获取的只有单个点

3.x版本。没有的话,那就自己管理start点击的位置。

我现在是在cc.Node.EventType.TOUCH_START获取手指数量,体验好一点点,如果两个手指同时按下,期间反复抬起、按下来一只手指,事件不会触发具体手指数量

多点触摸事件,触点是各自带有唯一的ID

打印出来会发现id都是不一样的

在线体验: 试试双指缩放

我是记录触摸id做的,在外贴不了代码

我目前也是记录id,ios和安卓有差异,超过两个id,我现在是先把之前保存的id清空