我用的事1.7.0正式版的,在touchend 时,用的getTouches()来获取监听到的点,但是,这个感觉不稳定啊,我测的事两个手指,同时点击的时候回都监听到,但是同时松开,有时候监听2个,有时候就1个,这让我感觉很纠结。。。。
另外,在touchstart的时候,用getTouches()获取到的为什么不是所有的触摸点,而只是当前同时按下的点呢(比如我之前按下一根手指, 后来又加两根手指同时按下, 此时的touchstart只能监听到后面的两个),但是真正的h5里面的getTouches()会监听到当前所有按下的点,(也就是说,h5会得到3个点),
还有一个就是,当有第六个点发生时,前面五个点都会失效,也没有任何的事件发送出来,第6个点不会再touchstart中监听到 @jare
有人知道怎么来解决吗
ios,android系统的多点同时触发的事件是只有在move的时候才有的。
began和ended都是分开触发的。
还有,由于ipad如果开启手势,本身有5点的手势操作,不知道是否也会影响到你反馈的第六点的问题。
我目前测的事h5的,手机端的还没有测,ipad也还没有用,所有不知道会不会有影响,我用的是iphone6微信打开的,move的时候的确是会有同时触发的时间,我测的h5上用getTouches()在began和ended都可以得到同时发生的点,但是ended的时候,如果我连个手指同时拿开,有时候监听的是2个点,有时候是1个,我不知道这个会是什么原因
多谢大佬在百忙之中来帮我解决问题
哦,web的情况我不太了解。帮你@panda吧。
这有可能是浏览器监听到的并不是同时松开,有可能先发送了一个 touch end 事件,你可以确认下。
我们一般是为了保证所有平台都一样的结果,所以可能为了和 native 统一,touch start 的时候只包含了 start 的触点
这个应该是由于 InputManager 中限制了最高 5 个触点,我们可以调整一下,不过由于我们用的是 bit mask,所以最高支持 8 个
这种问题我遇到过,是因为触摸被cancel了,需要监听cancel并且当end来处理。
panda大神好! 我是在start的时候讲点存进一个数组里,在end的时候讲对应的点从数组中删除,如果是先发送一个touchend的话,应该也会从数组中删除的吧,因为都是通过ID来区分的,毕竟每个ID是唯一的,只要发送了touchend就会执行删除对应点的操作,cancel我也监听了,也是没有的
多谢你的建议哈,我试了下,不知道你是什么情况下的,我在cancel中监听了,但是cancel并没有执行
另外,我要获取到所有触摸的点,改怎么做
@dumganhar @panda 我把js换成github上的v1.7-release就好了,这个引擎里,每一个touch都会发送一个事件,比如2个手指同时按下,会发送两个touchstart,而在1.7.0正式版中只会发送一个,所以在touchend的时候,如果2个手指同时松开,在1.7.0正式版中,发送的是一个touchend事件, 这样有时候监听的有2个点,有时候监听的有一个点,有2个点是正常监听的,如果是1个点的话,就会丢失另外一个点。。。 现在换成1.7-release之后,就会发送两个touchend事件,如果每一个事件的touches只有1个点的话,肯定是自己的一个touchID发出来的,所以是可以在两个事件中得到两个touchID,这样就解决了我之前提出的问题
好揪心啊!!!现在手机端的还没测
还有,为什么1.7-release吧版显示的是1.6.0的啊!!!
强力@jare