切换场景时(释放/不释放旧场景)各自操作方式

来源:互联网 发布:linux虚拟机串口调试 编辑:程序博客网 时间:2024/06/06 12:35

       前面的学习中我们知道切换场景使用replaceScene()函数进行场景切换,但是这种方式会导致旧场景被释放(ps:在实际开发中,一个场景占用的内存资源也许会很大,所以切换场景后必须释放旧场景的资源)。

 

       按照上面的思路,那么问题出现了,如果我在一个场景里面玩得正爽,突然觉得音乐很烦人想关掉,那么打开游戏设置场景设置完了(郁闷想摔手机的事情发生了),原先场景里面的游戏进度没有了。

 

       Cocos2d-x提供了另外两种切换场景的方式:推进和弹出。这两种方式都不需要释放旧场景,新旧场景同时存放在内存中

 

     1. ReplaceScene()方式代码:(使用了场景切换的特效)

    

void NodeHelloWorld::menuCloseCallback(CCObject* pSender){// "close" menu item clicked//CCDirector::sharedDirector()->end();        CCScene *psecond = SecondScene::scene();CCDirector::sharedDirector()->replaceScene(CCTransitionSlideInL::create(3.0f,psecond));}


     2.PushScene()和PopScene()

void NodeHelloWorld::menuCloseCallback(CCObject* pSender){// "close" menu item clicked//CCDirector::sharedDirector()->end();CCScene *psecond = SecondScene::scene();CCDirector::sharedDirector()->pushScene(CCTransitionSlideInL::create(3.0f,psecond));}


 

void SecondScene::closebutton(CCObject *pSender){//CCScene *pScene = NodeHelloWorld::sence();//CCDirector::sharedDirector()->replaceScene(CCTransitionSlideInB::create(5.0f,pScene));CCDirector::sharedDirector()->popScene();}


popscene和pushscene函数对应,popscene将新场景释放,恢复旧场景的显示,注意:新场景会被释放。

0 0