cocos2dx的触摸方法响应跳转场景的操作导致触摸失效的问题

最近的项目是iOS嵌入cocos2dx框架使iOS的应用不在死板。在研发过程中发现这么一个问题,在场景跳转的过程中,进入下一个场景后,前一个场景是被释放掉的,如果再回去,场景会被重新加载,在这一过程中,产生了一个关于触摸方法的问题,即在场景跳转了十五次之后,触摸方法失效了,产生的log是:之所以产生这个问题,是因为我将场景跳转的方法写在了onTouchBegan()这个方法中了,而cocos2dx的框架中有这么几个东西

仔细观察发现,当removeUsedIndexBit()方法不被调用,那么每一次跳转场景,g_indexBitsUsed的值都会增加,当执行到一定次数后,就会导致触摸失效,而removeUsedIndexBit()这个方法在什么地方调用呢?

void GLView::handleTouchesOfEndOrCancel(EventTouch::EventCode eventCode, int num, intptr_t ids[], float xs[], float ys[])这个方法是唯一一个调用removeUsedIndexBit()方法的函数,从方法名我们不难看出这个方法与TouchEnded和TouchCancelled方法有关。即只有将场景跳转的方法写在TouchEnded方法中,才是解决的方法。

猜你喜欢

转载自blog.csdn.net/rookie_cainiao/article/details/76238370
今日推荐