Cocos2d-X中Menu的综合运用

Cocos2d-X中Menu的综合运用,第1张

概述今天将以前写的代码和项目集成到了一个菜单中,可以通过菜单切换到以前做的项目 程序的工程目录 主要代码分析: LessonMenu.h中实现创建菜单,遍历菜单通过菜单切换到各个项目 #ifndef _LessonMenu_H_#define _LessonMenu_H_#include "cocos2d.h"USING_NS_CC;class LessonMenu : public CC

今天将以前写的代码和项目集成到了一个菜单中,可以通过菜单切换到以前做的项目

程序的工程目录


主要代码分析:

LessonMenu.h中实现创建菜单,遍历菜单通过菜单切换到各个项目

#ifndef _LessonMenu_H_#define _LessonMenu_H_#include "cocos2d.h"USING_NS_CC;class LessonMenu : public cclayer{public:    bool init();      static CCScene* scene();    voID EnterLasson(CCObject* sender);    //处理触摸事件     bool cctouchBegan(CCtouch*,CCEvent);       voID cctouchmoved(CCtouch*,CCEvent*);      CREATE_FUNC(LessonMenu);};#endif

LessonMenu.cpp中实现具体的功能

#include "LessonMenu.h"#include"Label.h"       #include"MenuItem.h"     #include"TextFIEldTTF.h"#include"AppMacros.h"        #include"LabelAtlas.h"  #include"Scenesecond.h"  #include"TextFIEldTTF1.h"#include"BMFont.h"           #include"Layer.h"       #include"Sprite.h"       #include"Zorder.h"#include"Coord.h"            #include"Sprite1.h"#include"TCCEditBox.h"#include"Menu.h"      #include "MenuContinus.h"#include "T14SwitchControl.h"#include "T15SlIDer.h"CCScene* LessonMenu::scene(){    CCScene* s = CCScene::create();    LessonMenu* layer = LessonMenu::create();    s->addChild(layer);    return s;}//保存创建的cpp文件static const char* lessons[] = { "BMFont.cpp","Coord.cpp","Label.cpp","LabelAtlas.cpp","Layer.cpp","Menu.cpp","MenuItem.cpp","Scenesecond.cpp","Sprite.cpp","Sprite1.cpp","TCCEditBox.cpp","TextFIEldTTF.cpp","TextFIEldTTF1.cpp","Zorder.cpp","MenuContinus.cpp","T14SwitchControl.cpp","T15SlIDer.cpp"};bool LessonMenu::init(){    cclayer::create();    //创建菜单    Ccmenu* menu = Ccmenu::create();    addChild(menu);    for(int i = 0; i < sizeof(lessons)/sizeof(*lessons); i++)    {        //创建菜单项        CcmenuItemFont* item = CcmenuItemFont::create(lessons[i]);        menu->addChild(item);        //设置处理函数        item->setTarget(this,menu_selector(LessonMenu::EnterLasson));        //设置菜单项的ID        item->setTag(10000 + i);    }    //对齐菜单项    menu->alignItemsvertically();    //触摸菜单项     settouchEnabled(true);	settouchMode(kCCtouchesOneByOne);    return true;}voID LessonMenu::EnterLasson(CCObject* sender){    //强制类型转换    CcmenuItem* item = dynamic_cast<CcmenuItem*>(sender);    //得到菜单项的ID    int tag = item->getTag() - 10000;    //用于调用场景    CCScene* scene = NulL;    switch(tag)    {    case 0:        {            scene = BMFont::scene();        }        break;    case 1:        {            scene = Coord::scene();        }        break;        case 2:        {            scene = Label::scene();        }        break;        case 3:        {            scene = LabelAtlas::scene();        }        break;        case 4:        {            scene = Layer::scene();        }        break;        case 5:        {            scene = Menu::scene();        }        break;        case 6:        {            scene = MenuItem::scene();        }        break;        case 7:        {            scene = Scenesecond::scene();        }        break;        case 8:       {           scene = Sprite::scene();        }        break;   case 9:       {           scene = Sprite1::scene();        }        break;      case 10:       {           scene = TCCEditBox::scene();        }        break;   case 11:       {           scene = TextFIEldTTF::scene();       }       break;   case 12:       {           scene = TextFIEldTTF1::scene();       }       break;   case 13:       {           scene = Zorder::scene();       }       break;   case 14:       {           scene = MenuContinus::scene();       }       break;   case 15:       {           scene = T14SwitchControl::scene();       }       break;   case 16:       {           scene = T15SlIDer::scene();       }       break;    }    if(scene)    {        CCDirector::sharedDirector()->pushScene(scene);    }}//处理触摸事件bool LessonMenu::cctouchBegan(CCtouch* touch,CCEvent){    return true;}//处理触摸事件voID LessonMenu::cctouchmoved(CCtouch* touch,CCEvent*){	// 获得触摸移动的距	CCPoint ptDelta = touch->getDelta();    // 只上下滑动的方法	setpositionY(getpositionY() + ptDelta.y);}

LayerBack.h实现创建一个只有一个返回按钮的层,通过返回按钮实现场景切换

#ifndef _LayerBack_H_#define _LayerBack_H_#include "cocos2d.h"USING_NS_CC;class LayerBack : public cclayer{public:    bool init();    voID back(CCObject*);};#endif

LayerBack.cpp中是具体实现的代码

#include "LayerBack.h"bool LayerBack::init(){    cclayer::init();    //得到窗口的尺寸    CCSize winSize = CCDirector::sharedDirector()->getWinSize();    Ccmenu* menu = Ccmenu::create();    addChild(menu);    CcmenuItem* backItem = CcmenuItemImage::create("Closenormal.png","CloseSelected.png",this,menu_selector(LayerBack::back));    menu->addChild(backItem);    //设置菜单项的位置(将菜单项设置到右下角)    backItem->setposition(ccp(winSize.wIDth / 2 - backItem->getContentSize().wIDth / 2,backItem->getContentSize().height / 2 - winSize.height / 2));    return true;}voID LayerBack::back(CCObject*){    //场景切换    CCDirector::sharedDirector()->popScene();}

执行结果:

 总结

以上是内存溢出为你收集整理的Cocos2d-X中Menu的综合运用全部内容,希望文章能够帮你解决Cocos2d-X中Menu的综合运用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1004020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存