cocos2d-x 场景切换时由资源预加载问题引起的场景无法切换的问题
来源:互联网 发布:c语言中volatile byte 编辑:程序博客网 时间:2024/04/30 03:59
问题描述
做了一个游戏,有这样的逻辑(一般的游戏都有的吧),打开游戏,首先看到主菜单界面,点击"开始游戏",进入加载界面,加载完后是玩游戏,在游戏界面按暂停后会弹出暂停菜单,可以选择“继续游戏”,也可以选择“返回到主菜单”。我的问题来了。当从暂停界面返回到主菜单界面后,再次“开始游戏”,始终处在加载界面,进不去游戏界面。- -!
逻辑实现
图中的 replace 代表 replaceScene方法 ,push 代表pushScene方法,pop代表popScene方法
昨天晚上碰到的这个问题,今天跟代码研究了一上午,总算解决了。好累。
解决办法
因为我是在loading 场景的init方法中(1)初始化loading场景界面,(2)加载游戏界面所需要的资源。游戏第一次运行没问题,当回到主菜单重新开始游戏才这样。刚开始就怀疑loading 加载资源的时候有问题。打断点,跟代码。一步一步调。后来发现确实是这样。我覆写了loading 场景的 onEnterTransitionDidFinish方法后,在这个方法中加载游戏界面所需要的资源,而在loading 场景的init中只初始化loading场景界面。(发现个有趣的现象,在loading界面异步加载的资源好像除了游戏退出不会自动释放,这就导致了第一次进游戏时可以看到那个loading条在滚动,而在从暂停界面返回到主菜单重新开始游戏时,那个loading界面只是闪了一下就过去了,很快的,这个以后再研究)。
以下是
我的log信息
1.mainmenu---》loading---》game
2.game---》pause
3.pause---》game
4.pause---》mainmenu
以上在没覆写loading 场景的 onEnterTransitionDidFinish方法时都很正常。
5.mainmenu---》loading---》game(从暂停界面返回到主菜单重新开始游戏)
可以看到在没覆写loading 场景的 onEnterTransitionDidFinish方法时,重新游戏 log信息是有不同的,左边的log中看到居然把GameScene给析构掉了,我擦。。。。。。
怎么理解
这其实是pushScene/popScene和replaceScene的区别了。这就不多说了。相信很多人都明白。说下几个方法的调用时机
init------》create时调用
onEnter------》init后会调用
onEnterTransitionDidFinish-------》onEnter后会调用
onExit------》dealloc 后调用
调用replaceScene方法替换场景时, 每个节点都会调用CCNode所带的 onEnter, onEnterTransitionDidFinish和onExit这三个方法。
init一般初始化界面,如果要加载很多资源最好放在 onEnterTransitionDidFinish 里面去做。这是拙见,有更好的解决方法欢迎讨论。
好了,终于解决了。苦逼的程序猿啊。哎。。。。。。
- cocos2d-x 场景切换时由资源预加载问题引起的场景无法切换的问题
- cocos2d-x 场景的切换
- cocos2d-x 场景的切换
- cocos2d-x切换场景时的研究
- cocos2d-x中场景之间的切换
- 【Cocos2d-X】场景切换的小小研究
- cocos2d-x CCScene场景的切换
- 俯瞰 cocos2d-x 01 场景的切换
- cocos2d-x scene场景的切换
- cocos2d-x提供的场景切换效果
- 游戏场景切换的问题
- cocos2d-x 场景切换
- cocos2d-x 场景切换
- cocos2d-x 场景切换
- Cocos2d-x场景切换
- cocos2d-x场景切换
- 场景切换问题:如何切换到已经打开的场景
- cocos2d-x加入场景切换效果后带来的“诡异”问题
- hibernate中表名和Modle类名不同时的配置
- vim使用笔记
- spring security3.x学习(16)_JdbcUserDetailManager的使用
- 黑马程序员_正则表达式
- mybatis generator 配置文件解析
- cocos2d-x 场景切换时由资源预加载问题引起的场景无法切换的问题
- Code Jam 2010 Round 1B Problem A
- 求两个串中的第一个最长子串
- 阿里研发一笔试题foo(2^31-3)
- 2014年创新工场校园招聘笔试题及答案
- Linux下几个常用的快捷键
- 王菲离婚后首发微博谈及与李亚鹏离婚原因
- 实现tabView 一个页面内有有多个子页
- 先序中序非递归 图的深度遍历