博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2dx中菜单menu 和 menuItem
阅读量:5118 次
发布时间:2019-06-13

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

菜单Menu是专门用来承载菜单按钮的Layer图层,图层中的子节点只能够是菜单项MenuItem或其子类。通常先创建菜单项MenuItem,然后使用一个或多个菜单项生成菜单Menu,最后把Menu加入当前Layer图层。

如果直接在层中添加MenuItem也可以正常显示,但是无法响应回调函数,因为Menu是继承至Layer,也就继承了触摸的相关事件,而MenuItem只是从Node继承而来,并不响应触摸,因此无法调用回调函数。

由于CCMenu的父类为Layer,所以锚点为(0,0),且无法设置锚点。Menu的默认原点坐标为屏幕正中心(winSize.width/2, winSize.height/2)。

而对于MenuItem是添加在Menu层中的,所以MenuItem的位置是相对于Menu层的偏移位置。MenuItem相对于Menu的偏移量默认为(0,0),且菜单项的锚点默认为(0.5,0.5)。

值得注意的是:Menu包含了多个子菜单项,每个子菜单项的位置都不一样,如果定义了Menu的位置,那它作为父节点会影响到所有的子菜单项的位置,所以一般我们都是吧Menu的位置设置在PointZero,然后设置MenuItem的位置(也就是相对父节点的偏移量)来定位整个菜单。

关于菜单项:

MenuItem继承自Node,所以它的子类菜单项都可以使用Node的相关操作。

MenuItem是所有菜单项的父类,建议不要直接使用该类,因为它并不包含具体显示的功能。

作为其它菜单项的父类,主要提供了一下三个功能:

(1)提供了基本按钮的状态:正常、选中、禁用。

(2)为按钮实现了基本的回调函数机制。当玩家点积按钮后,就会调用执行相应的回调函数。

(3)触碰菜单项,附有自动放大效果。

菜单项的子类可以分成三类,总共六个:

(1)文字菜单项:MenuItemLabel、MenuItemAtlasFont、MenuItemFont;

(2)图片菜单项:MenuItemSprite、MenuItemImage;

(3)切换菜单项:MenuItemToggle。

而关于各个菜单项之前的区别这里因为内容过多不再赘述,大家可以去查看他的源码和官方的文档获取相关知识,源码是最好的学习资料。

转载于:https://www.cnblogs.com/wangtingyi/p/4647516.html

你可能感兴趣的文章
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
Chrome development tools学习笔记(3)
查看>>
软件过程的守护神
查看>>
NAT配置
查看>>
【翻译】Brewer's CAP Theorem CAP定理
查看>>
undefined与null
查看>>
redis总结
查看>>
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问...
查看>>
STM32F10x_RTC秒中断
查看>>
[原创]网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍
查看>>
4-28
查看>>
display:none和visiblity:hidden区别
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>
SpringMVC学习总结(三)——Controller接口详解(1)
查看>>
RGB色彩空间和HSV色彩空间的理解
查看>>
牛的障碍Cow Steeplechase
查看>>
Zookeeper选举算法原理
查看>>