cocos2dx 3.X 中 Menu, MenuItem 注意事项

MenuItem显示

MenuItem和Menu的使用创建的例子中已经说的很清楚了。即:

auto userItem = MenuItemImage::create(
                                     "UserNormal.png",
                                     "UserSelected.png",
                                     CC_CALLBACK_1(MeijiaMain::menuLoginCallback, this));

userItem->setPosition(Vec2(origin.x + visibleSize.width - userItem->getContentSize().width/2 - 20,
		visibleSize.height - userItem->getContentSize().height/2 - 30));

// create menu, it's an autorelease object
menu = Menu::create(userItem, NULL);
menu->setPosition(Vec2::ZERO);

顺序就是:创建MenuItem,设置Item的位置等属性,创建Menu,设置Menu的位置等属性。最后将Menu放到一个层上显示。

注意:如果不使用Menu,单独将MenuItem放在层上,是可以显示的。但是交互以及函数调用是无效的。

MenuItem, Menu添加顺序

如果需要再添加一个MenuItem,操作很简单,与层添加Menu相同就是Menu直接addChild即可。但是需要注意的是(1)MenuItem加入到Menu;(2)Menu加入到层。这两件事情的顺序

如果将(1)(2)顺序倒置为(2)(1),则新加入的MenuItem无法显示。

解决方法:使用(1)(2)顺序;或者再MenuItem新加之后再调用一次(2),即(2)(1)(2)顺序。

禁用MenuItem

再来看看,如果需要将MenuItem禁用,仅仅调用MenuItem是不起任何作用的,该显示显示,该交互交互。需要 setEnabled(false) 整个Menu

// userItem->setEnabled(false)	// 无效操作
menu->setEnable(false)
时间: 2024-08-02 16:54:19

cocos2dx 3.X 中 Menu, MenuItem 注意事项的相关文章

Activity,Fragment中menu菜单注意事项

以前一般都是在Activity中添加menu菜单,一般是重写onCreateOptionsMenu和onOptionsItemSelected方法. 现在用fragment用的多了,就在fragment里面添加menu菜单,也是重写了onCreateOptionsMenu和onOptionsItemSelected方法. 但是需要注意的是: 在fragment中使用menu菜单,需要在onCreate()方法里面添加语句 setHasOptionsMenu(true);

Cocos2d-x 3.x中新的回调函数归纳

由于引入了C++ 11特性,cocos2d-x 3.x中许多实现方案,相对于以前的cocos2d-x 2.x,都有了很大的改进,当然性能上也得到一定的提升. 本文关注的是回调函数从2.x到3.x的变化. cocos2d-x 2.x时代的回调函数 2.X时代主要使用CCCallFunc.CCCallFuncN和CCCallFuncND等几种方式实现. CCCallFunc.CCCallFuncN和CCCallFuncND都用来创建带有回调函数的动作,区别主要在于回调函数是否带有参数. 2.x时代实

android工程中menu的使用总结

android的Menu使用 转自:thinkYeah的博客 1.普通的Menu 先来看看最简单的Menu怎样实现. 在主Activity中覆盖onCreateOptionsMenu(Menu menu)方法. 代码 @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(0, 1, 1, "苹果"); menu.add(0, 2, 2,

动态改变ToolBar中的MenuItem

最近项目中开始使用到ToolBar控件,其中有需求需要动态改变ToolBar中的MenuItem.如下图: 1.首先想到的办法是利用ToolBar自带的方法addView()和removeView(). 经测试,动态添加和删除view没有点击效果,需要自己添加,而且如果需要overflow效果,则需要自己实现PopupMenu,所以此方法适用于view比较少的情况. 2.ToolBar是用来替换ActionBar的,用过ActionBar的人应该都熟悉ActionMenuView,使用Actio

Cocos2d-x 3.0 中使用单点触摸

Cocos2d-x 3.0 中使用单点触摸 尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2712 在游戏中,经常会用到触摸,大部分游戏也是通过触摸控制游戏角色运动的,在Cocos2d-x 3.0中使用了新的触摸机制,Cocos2d-x 3.0中摒弃了Cocos2d-x 2.0中将要触发的事件交给代理(delegate)处理,再通过实现代理里面的onTouchBegan等方法接收事件,最后完成事件的响应,在Cocos2d-x 3.0中只需通过创建一个

AW笔记本升级SSD,外接双屏中的一些注意事项

自己留一个mark,以后提醒用. 1)机械硬盘状态下利用alien sprawn创建的系统恢复U盘,无法在SSD下使用,因为SSD中没有recovery分区,只能使用随机携带的系统恢复光盘: 2)最好在SSD安装系统之前,先用机械硬盘引导,在windows下使用diskgenious进行格式化分区,4k字节对齐: 3)将SSD安装在硬盘盘位1,因为是最经常使用,并在bios中设置SATA option为ACHI: 4)利用恢复光盘进行系统安装,记住选择SSD的分区: 5)系统安装成功后,按照网上

IOS 中NSTimer使用注意事项

1.初始化 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelec

Cocos2d-x 3.0中实现多点触摸

Cocos2d-x 3.0中实现多点触摸 尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2713 在上一篇<Cocos2d-x 3.0 中使用单点触摸>中介绍了在Cocos2d-x 3.0中实现单点触摸,但是有些游戏还会用到多点触摸,其中最典型的游戏是节奏大师,在节奏大师中会不断产生运动的音符,玩家需要不停地点击音符以获得高分,而且玩家可以多个手指头一起点,多个手指头一起点就是使用多点触摸实现的. 下面通过一个小的例子介绍如何在Cocos2d-x

Storm中Spout使用注意事项小结

Storm中Spout用于读取并向计算拓扑中发送数据源,最近在调试一个topology时遇到了系统qps低,处理速度达不到要求的问题,经过排查后发现是由于对Spout的使用模式不当导致的多线程同步等待.这里罗列几点个人觉得编写Spout代码时需要特别注意的地方: 1. 最常用的模式是使用一个线程安全的queue,如BlockingQueue,spout主线程从queue中读取数据:另外的一个或多个线程负责从数据源(如各种消息中间件.db等)读取数据并放入queue中. 2. 如果不关心数据是否丢