cocos2d-x 2.2.x 游戏暂停界面

开发环境:cocos2d-x 2.2.4


游戏暂停界面:
cocos2d-x中游戏暂停界面提供的思路是用pushScene()和popScne(),
即推进和弹出场景,当游戏暂停时,推进(pushScene())暂停场景,之前运行的场景将会自动暂停,然后我们可以在暂停场景中操作,

当我们不再需要暂停场景时,可以popScene()将暂停场景弹出。

(场景就像一张纸,我们推进一个场景,相当于在这张纸上再盖上一张,弹出场景相当于将最表面的那张纸拿掉)。

// 触摸暂停按钮
void GameLayer::TouchPaushButton()
{
	// 保存当前场景图
	CCRenderTexture *renderTexture = CCRenderTexture::create(_visibleSize.width,_visibleSize.height);  
    renderTexture->begin();  
    this->getParent()->visit();  
    renderTexture->end();  //这里实际是通过CCRenderTexture保存当前界面(相当于截屏),然后传递给暂停界面,当成背景精灵  
	// 弹出暂停对话框
	_sceneManager->GotoDialogScene(renderTexture);
}

//暂停对话框
void SceneManager::GotoDialogScene(CCRenderTexture *renderTexture)
{
	cocos2d::CCDirector* pDirector = cocos2d::CCDirector::sharedDirector();
	CreateDialogScene(renderTexture);
	pDirector->pushScene(_dialogScene);
}

// 创建对话框界面
void SceneManager::CreateDialogScene(CCRenderTexture *renderTexture)
{
	_dialogScene = CCScene::create();
	CCSprite *_spr = CCSprite::createWithTexture(renderTexture->getSprite()->getTexture());  
    _spr->setAnchorPoint(ccp(0, 0));
    _spr->setFlipY(true);  
    _dialogScene->addChild(_spr);
	
	DialogLayer* layer = DialogLayer::create();
	layer->_sceneManager = this;
	_dialogScene->addChild(layer);
}

// DialogLayer.cpp
// 继续游戏回调方法
void DialogLayer::menuCallbackContinueGame(CCObject* pSender)
{
	CCDirector::sharedDirector()->popScene();
}

// 退出游戏回调方法
void DialogLayer::menuCallbackExitGame(CCObject* pSender)
{
	CCDirector::sharedDirector()->popScene();
	_sceneManager->GotoMapScene();
}


你可能感兴趣的:(cocos2d-x 2.2.x 游戏暂停界面)