cocos2dx的触摸方法响应跳转场景的操作导致触摸失效的问题
2017-07-28 11:14
477 查看
最近的项目是iOS嵌入cocos2dx框架使iOS的应用不在死板。在研发过程中发现这么一个问题,在场景跳转的过程中,进入下一个场景后,前一个场景是被释放掉的,如果再回去,场景会被重新加载,在这一过程中,产生了一个关于触摸方法的问题,即在场景跳转了十五次之后,触摸方法失效了,产生的log是:之所以产生这个问题,是因为我将场景跳转的方法写在了onTouchBegan()这个方法中了,而cocos2dx的框架中有这么几个东西
![](http://img.blog.csdn.net/20170728112946739?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9va2llX2NhaW5pYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20170728113232016?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9va2llX2NhaW5pYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20170728113245714?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9va2llX2NhaW5pYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
仔细观察发现,当removeUsedIndexBit()方法不被调用,那么每一次跳转场景,g_indexBitsUsed的值都会增加,当执行到一定次数后,就会导致触摸失效,而removeUsedIndexBit()这个方法在什么地方调用呢?
void
GLView::handleTouchesOfEndOrCancel(EventTouch::EventCode
eventCode, int num,
intptr_t ids[],
float xs[],
float ys[])这个方法是唯一一个调用removeUsedIndexBit()方法的函数,从方法名我们不难看出这个方法与TouchEnded和TouchCancelled方法有关。即只有将场景跳转的方法写在TouchEnded方法中,才是解决的方法。
仔细观察发现,当removeUsedIndexBit()方法不被调用,那么每一次跳转场景,g_indexBitsUsed的值都会增加,当执行到一定次数后,就会导致触摸失效,而removeUsedIndexBit()这个方法在什么地方调用呢?
void
GLView::handleTouchesOfEndOrCancel(EventTouch::EventCode
eventCode, int num,
intptr_t ids[],
float xs[],
float ys[])这个方法是唯一一个调用removeUsedIndexBit()方法的函数,从方法名我们不难看出这个方法与TouchEnded和TouchCancelled方法有关。即只有将场景跳转的方法写在TouchEnded方法中,才是解决的方法。
相关文章推荐
- 一个js导致的jquery失效问题的解决方法
- servlet跳转页面导致css,js等失效的问题
- cocos2d-x 3.x 关于cocostudio的UI将事件吃掉,场景Layer无法响应手势的问题解决方法
- Cocos2dx 解决在Android平台运行游戏长时间不操作,导致的锁屏问题
- linux误操作删除掉var(rm /var/*)目录导致的问题,及解决方法
- 一个js导致的jquery失效问题的解决方法
- 关于flex,group中graphics.clear()导致的mouseMove等鼠标响应失效的问题
- php页面跳转session cookie丢失导致不能登录等问题的解决方法
- BitmapFactory的decodeStream()方法导致InputStream失效的问题
- jquery在ie7下选择器的问题导致append失效的解决方法
- cocos2dx3.x使用cocostudio触摸事件不响应的奇葩问题
- 关于ASP.NET中用Response.Write()方法响应导致页面字体变大的问题
- BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
- BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
- jquery动态改变onclick属性导致失效的问题解决方法
- 重写Authorize过滤器导致的登录已经失效,但却没有跳转到登录页问题的解决
- 问题:“Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。”的解决方法
- BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
- 关于锚点页内链接跳转出现问题(不响应,没有反应)的解决方法(ZT)
- cocos2dx3.x使用cocostudio触摸事件不响应的奇葩问题