您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x-2.1.3 中实现游戏的简单暂停与恢复

2013-09-19 01:13 441 查看

原理

cocos2d-x 中有个简单的实现游戏的暂停与恢复,就是利用pushScene 和popScene,当调用pushScene的时候,系统会自动将之前的scene给暂停。然后我们就可以在暂停的scene中操作了。实现这个暂停scene的时候可以利用CCRenderTexture做出一点特效(相当于透明暂停,可以看到上一个scene的截图)。CCRenderTexture这个具体的用法可以看帮助手册或者google。

下面是演示代码

//暂停回调
void MainMenuLayer::pauseLogicCallback(CCObject *pSender)
{
//这里是把前一个scene截个图传到下一个scene作为背景
CCRenderTexture *renderTexture = CCRenderTexture::create(getWinSize().width,getWinSize().height);
renderTexture->begin();
this->getParent()->visit();
renderTexture->end();

//这里加入push特效
CCDirector::sharedDirector()->pushScene( CCTransitionFade::create( 0.5f, PauseLayer::scene(renderTexture,true)));
}


这里跳转到下一个scene

CCScene *PauseLayer::scene(CCRenderTexture* sqr,bool isFlip)
{
CCScene *sc = NULL;
do{
sc = CCScene::create();
CC_BREAK_IF(!sc);

CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite *_spr = CCSprite::createWithTexture(sqr->getSprite()->getTexture());
_spr->setPosition(ccp(size.width/2, size.height/2));
_spr->setFlipY(isFlip);
_spr->setColor(ccGRAY);
sc->addChild(_spr);

PauseLayer *layer = PauseLayer::create();
CC_BREAK_IF(!layer);

sc->addChild(layer);
}while(0);

return sc;
}


效果图



图1



完整实例

百度网盘:http://pan.baidu.com/share/link?shareid=2380523568&uk=2684847550
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐