Cocos2d-X中的菜单

Cocos2d-X中的菜单,第1张

概述在Cocos2d-X实现显示菜单的方式比较特殊,首先需要使用CCMenu创建一个菜单,然后使用CCMenuItem创建一个菜单项,实际上程序中显示的菜单是使用CCMenu和CCMenuItemFont共同作用的结果,在Cocos2d-X中CCMenu只是一个容器,需要使用CCMenuItemFont才能实现创建菜单 程序示例:创建一个简单的菜单 程序代码: #include "Menu.h"C

在Cocos2d-X实现显示菜单的方式比较特殊,首先需要使用Ccmenu创建一个菜单,然后使用CcmenuItem创建一个菜单项,实际上程序中显示的菜单是使用Ccmenu和CcmenuItemFont共同作用的结果,在Cocos2d-X中Ccmenu只是一个容器,需要使用CcmenuItemFont才能实现创建菜单

程序示例:创建一个简单的菜单

程序代码:

#include "Menu.h"CCScene* Menu::scene(){    CCScene* scene = CCScene::create();        Menu* layer = Menu::create();    scene->addChild(layer);    return scene;}bool Menu::init(){    //初始化父类层    cclayer::init();    //得到窗口的尺寸    CCSize winSize = CCDirector::sharedDirector()->getWinSize();    //创建一个Menu(看不到效果,Menu只是一个容器)    Ccmenu* menu = Ccmenu::create();    //添加Menu    addChild(menu);    //创建一个MenuItem, 默认的Item位置就在中央    CcmenuItemFont* item = CcmenuItemFont::create("This is item");    //将MenuItem增加到Menu上    menu->addChild(item1);    return true;}


执行结果:


程序示例:创建多个菜单,并且实现菜单响应事件

在Menu.h中添加下面的代码

#ifndef __Menu_H__#define __Menu_H__#include "cocos2d.h"USING_NS_CC;class Menu : public cclayer{public:     bool init();      static CCScene* scene();    voID menuHandler(CCObject*);    CREATE_FUNC(Menu);};#endif // __HELLOWORLD_SCENE_H__


在Menu.cpp中添加下面的代码

#include "Menu.h"CCScene* Menu::scene(){    CCScene* scene = CCScene::create();        Menu* layer = Menu::create();    scene->addChild(layer);    return scene;}bool Menu::init(){    //初始化父类层    cclayer::init();    //得到窗口的尺寸    CCSize winSize = CCDirector::sharedDirector()->getWinSize();    //创建一个Menu(看不到效果,Menu只是一个容器)    Ccmenu* menu = Ccmenu::create();    //添加Menu    addChild(menu);    //创建一个MenuItem, 默认的Item位置就在中央    CcmenuItemFont* item1 = CcmenuItemFont::create("This is item1");    //将MenuItem增加到Menu上    menu->addChild(item1);     //创建一个MenuItem, 默认的Item位置就在中央    CcmenuItemFont* item2 = CcmenuItemFont::create("This is item2");    //添加MenuItem     menu->addChild(item2);     //设置item2的位置     item2->setpositionY(item1->getpositionY() - 100);    //设置响应函数:当触摸到item时调用Menu::menuHandler    //第一个参数:响应函数所在的对象    //第二个参数:成员函数指针    item1->setTarget(this,menu_selector(Menu::menuHandler));    item2->setTarget(this,menu_selector(Menu::menuHandler));    //设置菜单项的ID    //item1的ID为1    //item2的ID为2    item1->setTag(1);    item2->setTag(2);    return true;}//响应菜单事件voID Menu::menuHandler(CCObject* obj){    //将obj强制转换成菜单项类型    CcmenuItemFont* item = (CcmenuItemFont*)obj;    //得到菜单项的ID    int tag = item->getTag();    //判断用户点击了那个菜单    if(1 == tag)    {         MessageBox(NulL,TEXT("item1 is clicked !"),TEXT("MenuItem响应"),MB_OK);    }    else    {        MessageBox(NulL,TEXT("item2 is clicked !"),MB_OK);    }}


执行结果:



当单击“This is Item1”后:


当单击“This is Item2”后:

 总结

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

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

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

原文地址:https://54852.com/web/1003281.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存