先来张效果图
----------------------------------分割线------------------------------
#include "StartMenuScene.h" #include "GameScene.h" #include "HelpScene.h" using namespace cocos2d; CCScene* StartMenu::scene() { CCScene * scene = NULL; do { // 'scene' is an autorelease object scene = CCScene::create(); CC_BREAK_IF(! scene); // 'layer' is an autorelease object StartMenu *layer = StartMenu::create(); CC_BREAK_IF(! layer); // add layer as a child to scene scene->addChild(layer); } while (0); // return the scene return scene; } // on "init" you need to initialize your instance bool StartMenu::init() { bool bRet = false; do { ////////////////////////////////////////////////////////////////////////// // super init first ////////////////////////////////////////////////////////////////////////// CC_BREAK_IF(! CCLayer::init()); // Get window size and place the label upper. CCSize size = CCDirector::sharedDirector()->getWinSize(); initMenu(size); // 3. Add add a splash screen, show the cocos2d splash image. CCSprite* bSprite = CCSprite::create("/bg/start.jpg"); CC_BREAK_IF(! bSprite); // Place the sprite on the center of the screen bSprite->setPosition(ccp(size.width/2, size.height/2)); this->addChild(bSprite, 0); //add logo to scene CCSprite *logSprite =CCSprite::create("logo.png"); CC_BREAK_IF(! logSprite); logSprite->setPosition(ccp(size.width/2,size.height-150)); this->addChild(logSprite,1); bRet = true; } while (0); return bRet; } void StartMenu::initMenu(const CCSize & size){ //创建一个菜单的容器 CCMenu* sMenu = CCMenu::create(); sMenu->setPosition(CCPointZero); //开始游戏的item CCMenuItemImage *pStartGame=CCMenuItemImage::create("main_button1_1.png", "main_button1_2.png", this, menu_selector(StartMenu::menuStartGameCallback) ); pStartGame->setPosition(size.width/2,size.height-250); sMenu->addChild(pStartGame); //添加帮助菜单 CCMenuItemImage *hMenu= CCMenuItemImage::create("main_button2_1.png","main_button2_2.png",this,menu_selector(StartMenu::menuHelpCallback)); hMenu->setPosition(ccp(size.width/2,size.height-305)); sMenu->addChild(hMenu); //添加更多菜单 CCMenuItemImage *mMenu= CCMenuItemImage::create("more1.png","more2.png",this,menu_selector(StartMenu::menuCloseCallback)); mMenu->setPosition(ccp(size.width/2,size.height-360)); sMenu->addChild(mMenu); //添加设置菜单 CCMenuItemImage *setMenu=CCMenuItemImage::create("main_button3_1.png","main_button3_2.png",this,menu_selector(StartMenu::menuCloseCallback)); setMenu->setPosition(ccp(size.width/2,size.height-420)); sMenu->addChild(setMenu); //添加退出菜单 CCMenuItemImage *exitMenu=CCMenuItemImage::create("exit1.png","exit2.png",this,menu_selector(StartMenu::menuCloseCallback)); exitMenu->setPosition(ccp(size.width/2,size.height-480)); sMenu->addChild(exitMenu); //把餐单添加到当前的场景里面 this->addChild(sMenu, 1); } void StartMenu::menuCloseCallback(CCObject* pSender) { // close 游戏 CCDirector::sharedDirector()->end(); } void StartMenu::menuStartGameCallback(CCObject* pSender){ //进入游戏界面 CCDirector::sharedDirector()->replaceScene(GameScene::scene()); } //点击帮助按钮的回调方法 void StartMenu::menuHelpCallback(CCObject* pSender){ //创建一个help的scene CCScene *scen=HelpScene::scene(); //设置一个动画效果 CCTransitionFade *fade=CCTransitionFade::transitionWithDuration(0.5,scen,ccBLACK); //切换场景 CCDirector::sharedDirector()->replaceScene(fade); }