最近在用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();
弹出就可。写了好一阵子,老衲累了,还是休息去吧
完