游戏主菜单页面
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();
- }
来源: http://www.bubuko.com/infodetail-2222391.html