cocos2d-x暂停和恢复游戏

来源:互联网 发布:知乎创始人周源 编辑:程序博客网 时间:2024/06/05 04:44

cocos2d-x暂停和恢复游戏


在初始化方法init()中加入按钮

CCSize size = CCDirector::sharedDirector()->getWinSize();    CCMenuItemImage* zanting = CCMenuItemImage::create(   "pause.png",   "pause.png",   this,   menu_selector(RoleLayer::onPause));CCMenu* menu = CCMenu::create(zanting, NULL);    menu->setPosition(ccp(size.width * 5 / 6, size.height * 5 / 6 + 30));    addChild(menu, 1, 10);

头文件中加入


// 暂停void onPause(CCObject*  pSender);void onResume(CCObject* pSender);CCSprite * _pauseBg;

回到cpp中,加入两个函数


void RoleLayer::onPause(CCObject* pSender){CCSize size = CCDirector::sharedDirector()->getWinSize();_pauseBg = CCSprite::create("pause.png");_pauseBg->setPosition(ccp(size.width * 5 / 6, size.height * 5 / 6 + 30));this->addChild(_pauseBg, 2);// 上一级的Menu,设置为false,使之失效CCMenu* menu = (CCMenu*)this->getChildByTag(10);menu->setEnabled(false);// 这一级的Menu,子菜单       CCMenuItemImage* huifu = CCMenuItemImage::create(   "play.png",   "play.png",   this,   menu_selector(RoleLayer::onResume));CCMenu* childMenu = CCMenu::create(huifu, NULL);childMenu->setPosition(ccp(20,20));_pauseBg->addChild(childMenu);// 暂停游戏CCDirector::sharedDirector()->pause();}// onResume方法void RoleLayer::onResume(CCObject* pSender){// 恢复上一级按钮的点击CCMenu* menu = (CCMenu* )this->getChildByTag(10);menu->setEnabled(true);// 恢复游戏this->removeChild(_pauseBg);CCDirector::sharedDirector()->resume();}