• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
vanstar
不知有汉,无论魏晋
博客园    首页    新随笔    联系   管理    订阅  订阅

cocos2d-x载入图以及后前台切换

最近在用cocos2d-x引擎,因为使用的贴图较多,所以就想到了载入图,可是老衲以前可是没做过游戏的娃啊,网上资料太少,如何是好,垂首顿足,只好自己摸索。

关于纹理的载入,其实,

CCTextureCache::sharedTextureCache()->addImage("图片名");

 使用过一次此函数,再以后还要用到此图片名的时候,引擎就不会再载入纹理了啊,直接就从CCTextureCache中提取

于是,我们就新建一个Scene,在里面开一个线程或者什么的用来载入资源:有些音乐文件比较大,如果不提前载入在播放的时候会有顿卡,

于是,我们就用CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(音乐文件名);

最好先在载入图的时候先预先载入一下,这样后面,顿卡的情况会有所解决。

当然,非常常用的动画,我们还可以用CCAnimationCache::sharedAnimationCache()->addAnimation(XXX,XXX)提前载入。

后面要用的时候再调用CCAnimationCache::sharedAnimationCache()->animationByName("动画名")调出来使用。

综上,其实载入图中载入的内容自己也要有所控制,载入的多了,程序初始内存占得太大,载入的太少,对后面的优化效果没有太大的体现,根据自己所需进行决定。

--------------------------------------------------分割线----------------------------------------------------

下面开始讲后前台的切换,恩恩,读者读到这里肯定会觉得好奇怪啊竟然2个风牛马不相及的东西合在一个文章里。。。其实,不然,本文其实还是讲内存的载入和释放啦

老衲觉得:在移动设备上的程序切换到后台的时候,某些系统版本(尤其是安X)感觉内存不足的时候,就会释放了我们的资源,导致我们在切换回前台的时候崩溃,于是,在切换到前台的时候,我们还是提前再载入一遍所需的贴图比较好,在win32下,在程序切换回前台时候AppDelegate文件里的applicationWillEnterForeground方法(IOS上是啥?IOS的网上可以搜到,不同平台各自把代码贴之)会被调用,在里面写写载入的,笔者懒人,直接就做了个切换回来的场景。。

CCScene * pSc = CSwitchLoadScene::scene();
CCDirector::sharedDirector()->pushScene(pSc);
CCDirector::sharedDirector()->resume();

然后你在载入图按你所在关卡载入完纹理以后就果断调用

CCDirector::sharedDirector()->popScene();

弹出就可。写了好一阵子,老衲累了,还是休息去吧

完

posted @ 2011-12-19 17:31  vanstar  阅读(2510)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3