博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[cocos2d-x]关于菜单项
阅读量:4334 次
发布时间:2019-06-07

本文共 3936 字,大约阅读时间需要 13 分钟。

菜单项的分类

这里写图片描述

MenuItem:菜单项类,它是一个虚基类,因此必须实现它的子类,再把子类对象赋给父类指针。
MenuItemFont:字体菜单项。
MenuItemAtlasFont:字体菜单项,和第一个的区别在于,它是用字体配置文件来设置字体。
MenuItemImage:图片菜单项。
MenuItemLabel:标签菜单项。
MenuItemSprite:精灵菜单项
MenuItemToggle:开关菜单项。

菜单项的实现

1.MenuItemFont(字体菜单项)

方法1:
MenuItemFont::create(选项文字,触发目标对象,触发目标函数);
方法2:
MenuItemFont::create(选项文字);

2.MenuItemImage(图片菜单项)

方法1:
MenuItemImage::create(默认显示的图片,点击时显示的图片,触发目标对象,触发目标函数);

3.MenuItemLabel(文本菜单项)

方法1:
MenuItemLabel::create(CCLableTTF对象,触发目标对象,触发目标函数);

4.MenuItemSprite(精灵菜单项)

方法1:
MenuItemSprite::create(默认显示的精灵对象,选中时显示的精灵对象,触发目标对象,触发目标函数);

5.MenuItemToggle(开关菜单项)

方法1:
MenuItemToggle::createWithTarget(触发目标对象,触发目标函数,MenuItem对象的可变参数列表);

下面是具体实现:

//获取尺寸Size mysize=Director::sharedDirector()->getWinSize();//文字菜单项MenuItemFont * mymenu1=MenuItemFont::create("文字菜单1");mymenu1->setPosition(ccp(mysize.width/2,mysize.height-40));MenuItemFont * mymenu2=MenuItemFont::create("文字菜单2",this,menu_selector(Menu::menuCloseCallback));mymenu2->setPosition(ccp(mysize.width/2,mysize.height-80));//图片菜单项MenuItemImage * mymenu3 = MenuItemImage::create("CloseNormal.png","CloseSelected.png",this,menu_selector(Menu::menuCloseCallback));mymenu3->setPosition(ccp(mysize.width/2,mysize.height-120));//文本菜单项LabelTTF * ttf1=LabelTTF::create("文本菜单","Helvetica",24);MenuItemLabel * mymenu4=MenuItemLabel::create(ttf1,this,menu_selector(Menu::menuCloseCallback));mymenu4->setPosition(ccp(mysize.width/2,mysize.height-160));//精灵菜单项Sprite * mysprite1=Sprite::create("CloseSelected.png");Sprite * mysprite2=Sprite::create("CloseNormal.png");MenuItemSprite * mymenu5=MenuItemSprite::create(mysprite1,mysprite2,this,menu_selector(Menu::menuCloseCallback));mymenu5->setPosition(ccp(mysize.width/2,mysize.height-200));//开关菜单项MenuItemFont * font1=MenuItemFont::create("开");MenuItemFont * font2=MenuItemFont::create("关");MenuItemToggle * mymenu6=MenuItemToggle::createWithTarget(this,menu_selector(Menu::menuCloseCallback),font1,font2,NULL);mymenu6->setPosition(ccp(mysize.width/2,mysize.height-240));//创建菜单Menu* mymenu = Menu::create(mymenu1,mymenu2,mymenu3,mymenu4,mymenu5,mymenu6,NULL);mymenu->setPosition(CCPointZero);this->addChild(mymenu, 1);

菜单项的排列顺序

1.垂直排列:

menu->alignItemsVertically();menu->alignItemsVerticallyWithPadding(50);

2.水平排列:

menu->alignItemsHorizontally();带间隔的排列:menu->alignItemsHorizontallyWithPadding(30);//每两个菜单项之间间隔30

实例

auto closeItem = MenuItemImage::create(    "..\\Resources\\CloseNormal.png",    "..\\Resources\\CloseSelected.png",    CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width / 2,    origin.y + closeItem->getContentSize().height / 2));// create menu, it's an autorelease objectauto menu = Menu::create(closeItem, NULL);menu->setPosition(Vec2::ZERO);addChild(menu, 1);// 创建一个MenuItemFont的MenuItemMenuItemFont::setFontSize(25);MenuItemFont::setFontName("Courier New");auto pMenuItem1 = MenuItemFont::create("MoveDown", CC_CALLBACK_1(HelloWorld::menuJellyThinkCallback, this));pMenuItem1->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2 + 100));// 创建一个MenuItemAtlasFont的MenuItemauto pMenuItem2 = MenuItemAtlasFont::create("378", "..\\Resources\\number.png", 256, 256, '0');pMenuItem2->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2 + 70));pMenuItem2->setScale(0.1);// 创建一个MenuItemToggle的MenuItemauto pMenuItem3 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::menuJellyThinkCallback, this), MenuItemFont::create("Toggle1"), MenuItemFont::create("Toggle2"), NULL);pMenuItem3->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2 + 40));// 创建菜单对象,是存放菜单项的容器Menu* mn = Menu::create(pMenuItem1, pMenuItem2, pMenuItem3, NULL);// 注意:默认情况下,Menu是忽略锚点的this->ignoreAnchorPointForPosition(false);mn->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));addChild(mn);

效果:

这里写图片描述

以上文字和代码从下面几个博客中学习之后总结回来的精髓:

转载于:https://www.cnblogs.com/lizhenghao126/p/11053719.html

你可能感兴趣的文章
H5 表单标签
查看>>
su 与 su - 区别
查看>>
C语言编程-9_4 字符统计
查看>>
在webconfig中写好连接后,在程序中如何调用?
查看>>
限制用户不能删除SharePoint列表中的条目(项目)
查看>>
【Linux网络编程】使用GDB调试程序
查看>>
feign调用spring clound eureka 注册中心服务
查看>>
ZT:Linux上安装JDK,最准确
查看>>
LimeJS指南3
查看>>
关于C++ const成员的一些细节
查看>>
《代码大全》学习摘要(五)软件构建中的设计(下)
查看>>
C#检测驱动是否安装的问题
查看>>
web-4. 装饰页面的图像
查看>>
微信测试账户
查看>>
Android ListView上拉获取下一页
查看>>
算法练习题
查看>>
学习使用Django一 安装虚拟环境
查看>>
Hibernate视频学习笔记(8)Lazy策略
查看>>
CSS3 结构性伪类选择器(1)
查看>>
IOS 杂笔-14(被人遗忘的owner)
查看>>