发现多点触摸有部分事件丢失,不知是否bug

在develop分支下测了下多点触摸,发现多个触摸点时,部分触摸点事件丢失,比如操作顺序和接收到的事件如下:

触摸点1按下 began
触摸点2按下 began
moved
触摸点1松开 ended
触摸点2松开 没反应

打日志+断点调试了下C++的源码,发现在CCTouchDispatcher::touches()中所有事件都是正常通知到delegate了,但是在CCScene::dispatchingTouchEvent()中,第二个松开的触摸点没有接收到ended事件,我只知道quick对cocos2dx的触摸机制有一些调整,但因为我对cocos2dx也不是很熟,所以不知道这算不算是quick的bug呢?

对了,触摸模式无论是否kCCTouchesAllAtOnce,都接收不到第二个触摸点松开的事件。

----- 2014-07-02 22:43 补充 ----
刚测了下,还是有问题,会造成CCScrollView功能不正常,详情见9楼。

这个BUG已确认,
在处理中。
rc2中修复。

请问RC2大概多久发布呢

请问开启多点触摸之后,按下触摸点1不松开,再按下触摸点2,此时会识别为两次单点触摸,而不是一次两点触摸(主要是用在缩放中)。请问这样的话是quick的问题呢,还是我代码实现的不完善

多点触摸的问题在于c2dx最底层对于多个触摸点的处理太简单,所以我们需要在quick里做很多额外的处理工作。这个bug解决后,我们会发布2.2.3RC2版本。

THX, 辛苦了廖大, 只是不知这个问题有没有向cocos2d-x的开发组反映~

我也发现了这个问题。

已经修复 :2:

请更新到 master 分支最新代码

UP~~~~~~~~~~

— Begin quote from ____

引用第7楼dualface于2014-07-01 02:33发表的 :
已经修复 :2:

请更新到 master 分支最新代码 http://www.cocoachina.com/bbs/job.php?action=topost&tid=206610&pid=992693

— End quote

刚试了下,在One by one的模式下,还是会有触摸点丢失的问题:
setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)

其实我是想用CCScrollView的双指捏合缩放功能,CCScrollView我看了下源码,只支持one by one的模式,不支持all at once,目前捏合以后,连ScrollView的拖动都不能用了……

测试代码如下:
myLayer:setTouchEnabled(true)
myLayer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(e)
local info = “event:” … e.name … “; x,y:” … e.x … “,” … e.y
print(info)
return true
end)

操作顺序如下:
1、多个手指依次按下,会出现一个began和多个moved事件
2、然后一起移动手指,又出现一堆moved事件
3、最后手指依次抬起,没有触发任何的ended事件。

:5:

已经修复了

— Begin quote from ____

引用第10楼dualface于2014-07-07 18:00发表的 :
已经修复了 http://www.cocoachina.com/bbs/job.php?action=topost&tid=206610&pid=997604

— End quote

感谢廖哥,晚上我回去再拿真机试一试~

http://www.cocoachina.com/bbs/read.php?tid=213145

:8: :8: :8: 哎。。。。。。。。。。。。。。quick和这个网站一样,好难用

别用了,早点解脱