游戏主菜单页面
BeginLayer类封装该页面,init函数初始化该页面布景
该页面背景
isDialog = false;
setKeypadEnabled(true); //开启按键事件
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); //获取可见区域原点坐标
CCSprite* bSprite = CCSprite::create("pic/background.png");//背景图片
bSprite->setPosition(ccp(origin.x, origin.y));
bSprite->setAnchorPoint(ccp(0, 0));//默认锚点为0.5,0.5
this->addChild(bSprite, 0);
创建菜单项按键
主菜单键及回调
CCMenuItemImage *continueItem = CCMenuItemImage::create
(
"menuContinue.png", //平时的图片
"menuContinue2.png", //选中时的图片
this,
menu_selector(BeginLayer::continueSence)//点击时执行的回调方法
);
继续键及回调
CCMenuItemImage *continueItem = CCMenuItemImage::create
(
"menuContinue.png", //平时的图片
"menuContinue2.png", //选中时的图片
this,
menu_selector(BeginLayer::continueSence)//点击时执行的回调方法
);
成就键及回调
CCMenuItemImage *achievementsItem = CCMenuItemImage::create
(
"menuAchievements.png", //平时的图片
"menuAchievements2.png", //选中时的图片
this,
menu_selector(BeginLayer::achievementsSence)//点击时执行的回调方法
);
关于键及回调
CCMenuItemImage *aboutItem = CCMenuItemImage::create
(
"menuAbout.png", //平时的图片
"menuAbout2.png", //选中时的图片
this,
menu_selector(BeginLayer::aboutSence)//点击时执行的回调方法
);
设置键及回调
CCMenuItemImage *settItem = CCMenuItemImage::create
(
"set.png", //平时的图片
"set2.png", //选中时的图片
this,
menu_selector(BeginLayer::setSence)//点击时执行的回调方法
);
创建标题
CCSprite* tSprite = CCSprite::create("pic/title.png");
//设置精灵对象的位置
tSprite->setPosition(ccp(origin.x, origin.y+visibleSize.height-207));
tSprite->setAnchorPoint(ccp(0, 0));
this->addChild(tSprite, 3);
组合成菜单对象
pMenu = CCMenu::create(continueItem,newMenuItem,achievementsItem,aboutItem,settItem,NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, GAME_LEVEL_WYF);
为菜单项出场添加动画
CCNode* child = NULL;
CCArray * pArray = pMenu->getChildren();//获取所有菜单项
int count = pArray->count();//个数
for(int m=0;m<count;m++)//遍历菜单项
{
child = (CCNode*)(pArray->objectAtIndex(m));//每个菜单项
child->setPosition(ccp(400,550));//初始位置
CCActionInterval* moveTo1 = CCMoveTo::create(0.2f,ccp(400,-40));
CCActionInterval* moveTo2 = CCMoveTo::create(0.25f*(count-m),ccp(400,80+80*(count-1-m)));
CCActionInterval* move_ease_in2 = CCEaseElasticOut::create(moveTo2);//moveTo2振幅效果
CCDelayTime *delay = CCDelayTime::create(0.2f*(count-m-1));//每个菜单项出场间歇时间
CCSequence* seq = CCSequence::create(delay,moveTo1,move_ease_in2, NULL);//
child->runAction(seq);//执行
}
主菜单键回调,通过调用toNewGameLayer来切换到NewGameLayer场景,真正的游戏主页面
void BeginLayer::newSence(CCObject* pSender)
{
tsm->toNewGameLayer(1);//第一关
}
继续键回调,先获取上次的数据,然后切换到相应关卡
void BeginLayer::continueSence(CCObject* pSender)
{
//int gK=JNIUtil::getInt("continue",1,classPath.c_str());
tsm->toNewGameLayer(1);
}
成就键回调,调用toAchieveLayer切换到AchieveLayer场景,来统计游戏数据中玩家最高分、最高关卡
void BeginLayer::achievementsSence(CCObject* pSender)
{
tsm->toAchieveLayer();
}
关于键回调,调用toHelpLayer切换到HelpLayer场景,提示游戏帮助手册
void BeginLayer::aboutSence(CCObject* pSender)
{
tsm->toHelpLayer();
}
设置键回调,调用toSetLayer切换到SetLayer场景,设置游戏音乐及音效
void BeginLayer::setSence(CCObject* pSender)
{
tsm->toSetLayer();
}
返回键处理,调用toOutLayer切换到推出游戏场景
void BeginLayer::keyBackClicked()
{
if(isDialog)
{
return;
}
isDialog = true;
//暂停声音播放
CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
tsm->toOutLayer();
}