临时场景的使用本来是为了玩游戏的时候突然电话来了,而将游戏内容暂时存储,等打完电话又回到游戏中接着玩,但是一想其实在游戏中的菜单项或者暂停菜单也可以直接用它。所以直接都使用临时场景算了。
首先,临时场景因为本身是覆盖在游戏场景上的,而游戏场景并未被推出,所以临时场景的代码可以直接在游戏场景的主文件里面写,当然也可以另外开个头文件去写。
调出临时场景的代码如下:
// 1. 一个 CCRenderTexture 用以存储当前场景(你就是要在这上面弹出界面)的界面
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCRenderTexture* renderTexture = [CCRenderTexture renderTextureWithWidth:winSize.width height:winSize.height];
[renderTexture begin];
// [playingScene visit];
[renderTexture end];
[renderTexture setPosition:ccp(winSize.width/2, winSize.height/2)];
//2. pauseScene 是要弹出的界面场景,看起来还有上一个界面,实际上已经切换了一个场景
CCScene* pause = [CCScene node];
// 3. 一个 CCLayerColor/CCColorLayer (这两个一样) 用以在上一个界面覆盖一层, 实现暗灰效果
CCLayerColor* colorLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 128)];
[pause addChild:renderTexture];
[pause addChild:colorLayer];
[pause addChild:[pauseScene node]];
[[CCDirector sharedDirector] pushScene:pause];
代码具体的含义备注上基本已经写了,需要注意的是,原本我天真的以为调回原场景只需用跟PUSH相反的popSnece就行了,但cocos2d里面,popSnece居然
是停止当前场景的意思,所有还得用pauseScene再跳回去才行。