先来张效果图
----------------------------------分割线------------------------------
#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);
}