代码下载 http://vdisk.weibo.com/s/BDn59yfnBV9dj
我们要在GameScene.h中添加如下代码:
//数据面板层 CC_SYNTHESIZE_RETAIN(PanelLayer*, _panelLayer, PaneLayer); //菜单页面相关的函数 //暂定 void pause();
之后我们要完成PanelLayer.h
#include "cocos2d.h" USING_NS_CC; class PanelLayer:public CCLayer { public: CREATE_FUNC(PanelLayer); bool init(); void pause(); };
PanelLayer.cpp
#include "GameScene.h" #include "StaticData.h" bool PanelLayer::init() { bool pRet = false; do { CC_BREAK_IF(!CCLayer::init()); CCSize winSize = CCDirector::sharedDirector()->getWinSize(); CCMenuItemSprite* pause = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName(STATIC_DATA_STRING("pause_normal")), CCSprite::createWithSpriteFrameName(STATIC_DATA_STRING("pause_selected")), this, menu_selector(PanelLayer::pause)); CCMenu* menu = CCMenu::create(pause,NULL); this->addChild(menu); CCSize pauseSize = pause->getContentSize(); menu->setPosition(ccp(winSize.width - pauseSize.width * 0.5, pauseSize.height * 0.5)); pRet = true; } while (0); return pRet; } void PanelLayer::pause() { //getParent()方法找到当前层的父类,当前层是加在GameScene中的因此 GameScene* gameScene = (GameScene*)this->getParent(); gameScene->pause(); }
GameScene.cpp的 boolGameScene::init()方法中添加如下代码
//创建显示数据层并加到场景中 _panelLayer = PanelLayer::create(); this->addChild(_panelLayer);
实现一个空的pause函数
void GameScene::pause() { }