在前面已经谈过单点触摸的用法了,所以对于多点触摸来说,也是非常简单容易的。
多点触摸其拥有added,removed这么两个独有事件。
added 屏幕中增加了一个触点
removed 屏幕中移除了一个触点
另外,还有这么一个event.points 屏幕中全部触点信息,
每一个触点依然可以获取到其,
point.x,point.y 触摸点的当前位置
point.prevX,point.prevY 触摸点之前的位置
point.id 触摸点 id,用于确定触摸点的变化
结合单点触摸的几个事件,所以多点触摸事件发生时,会有began,added,moved,removed,ended,canclled这些响应事件。
你可能会疑惑began和added触发的顺序,我们在使用cocos2d-x c++的时候,多点触摸还是写在began当中,只是触摸点参数是一个集合,包含了全部触点的信息。但在quick中,将多点信息封装得更加方便。当第一个触点触摸到屏幕时,响应的是began事件,之后再有触点在屏幕时,就会触发added事件了,这样一来,我们就能清楚的知道玩家什么时候第二个手指也接触到屏幕了。如果在c++中,就需要再写些代码来判断了。
因此,removed和ended响应事件也就容易理解了触发顺序了,当有触点离开屏幕时,只要event.points中触点的个数大于等于2,那么会响应removed事件,当屏幕中最后一个触点离开时,会响应ended事件。
对于event.points中每个触点的信息,我们通过循环就可以依次获取了。
- forid,pointinpairs(event.points)do
- printf("%d,%f,%f",id,event.points[id].x,event.points[id].y)
- end