多点触摸问题?求救!

cclayer开启多点触摸,android真机测试,下面是代码

ptouches是CCSet类型参数

int count = ptouches->count();

CCLog("%d", count);
if(count == 1)
{
CCLog(“One Touch”);
}

else if(count == 2)
{
CCLog(“TwoTouch”);
}
不管几个手指触摸输出的都是1,
如果是两个手指触摸屏幕,那么上面的代码会执行两次,就是输出两次count跟两次One Touch。
这要怎么破???
求大神指导下!!

干嘛不用case switch 语句

if,跟switch有何差别?问题的关键不是用哪种判定。

我用的是cocos2d-x-2.2.1版本,追踪到cocos2d-x目录下 platform\android\jni\TouchesJni.cpp文件里,TouchesBegin和TouchesEnd传入的参数都是1个触摸点,只有TouchesMove和TouchesCancel才能有多个的

可以先保存触摸点,在定时器函数里面处理,我设置的时间间隔为0.01,效果不错呢

如果用CCSet保存触摸点CCTouch, 在处理完后调用CCSet的removeAllObjects方法会出错的,CCSet 是封装了STL的set容器,但在removeAllObjects方法里面只是release了一遍set里的CCObject,没有erase它们,所以得自己手动for循环调用removeObject

原先上面的那个版本有些错误,不好意思啊,没仔细验证就发出来了

CCSet 传入到CCTouchDispatcher::touches里就被拷贝了一份堆内存传入了,在ccTouchesBegan里就不用再拷贝了

cocos2d-x的多点触摸的begin要真的同时点上才会触发,和android原生比差远了。可以自己在move的时候处理