CocosGUI---Menu
来源:互联网 发布:横截面数据举例 编辑:程序博客网 时间:2024/05/29 08:49
class CC_DLLMenuItem : publicNode
class CC_DLLMenu : publicLayer
Menu负责响应触摸,MenuItem负责显示菜单项
创建:
Menu* menu = Menu::create(); addChild(menu);
MenuItem* item = MenuItemImage::create("Images/b1.png","Images/b2.png");
menu->addChild(item); //item必须依附于menu,两张图片分别表示按下前后的显示效果MenuItemImage是MenuItem孙子继承类
响应:
由每个item自己设置自己的触摸响应:
item->setCallback([](Ref*){MessageBox("Itemclicked","title");});
item->setCallback(CC_CALLBACK_1(类名:: MenuItemCallback,this));
回调函数:void MenuItemCallback(Ref*sender),参数必须有Ref*,表示调用这个函数的item对象通过下面方式获取:MenuItem* item = (MenuItem*)sender;
几个注意:
1. 默认菜单项在中央item位置默认在(0,0)点,锚点默认是(0.5,0.5)Menu的坐标体系和普通的Layer坐标体系不一样,默认在中间
2. MenuItem的创建方法也很多种
MenuItem* item2 = MenuItemSprite::create(Sprite::create("Images/b1.png"),Sprite::create("Images/b2.png"));//通过两个精灵创建item
MenuItemFont* item3 = MenuItemFont::create("显示内容");//用文本字符创建,其内容就是文本内容
Label* label = Label::createWithSystemFont("createByLabel","Arial", 50);
MenuItemLabel* item4 =MenuItemLabel::create(label); //用Label创建,比上面的更加全面
还有一个更吊的ITEM:
Vector<MenuItem*> subItems;
MenuItemToggle* toggle =MenuItemToggle::createWithCallback(CC_CALLBACK_1(T011101Menu::MenuItemCallback,this),
subItems); //Toggle就是一个可以变换Item的类型,即每触摸一次,更换一个新的Item出来,createWithCallback有两个参数,其一是回调(和其他类型Item的回调一样),其二是存放一堆Item的Vector(当按了这个Item之后就会从Vector中用一个替换当前Item)
3. Item的各种属性:
item->getSelectedIndex();返回所按Item的ID;int tag =item->getTag();Tag
4. 关于位置:Menu的大小和窗口一样大,Menu不是与窗口重合,而是Menu的左下角正好位于窗口中央(整个Menu是靠近右上的),显然Item用的是Menu坐标,Item也是锚点对齐。创建Item之后会按照先后顺序自动将Item排列在屏幕中央。
关于位置调整的函数:menu->alignItemsVertically();//水平
menu->alignItemsVerticallyWithPadding(50); //水平带间隔
5. 回调函数有一个参数Ref*,参数表示回调该函数的菜单项
关于MenuItem的触摸控制:和普通触摸一样,也是有四大函数,触摸是在Menu中做的
onTouchBegan:判断当前选择对象的父节点以及祖父节点的可见性,如这两者判定无误,获取当前选择,同时放上第二张Item图片。
OnTouchMove:首先确定触摸。确定当前移动到的Item,如果更换了新的Item,要做出新的效果(会用到各种坐标转换)
onTouchEnded:先retain一下menu,最后会release的。主要原因是如果Item的回调是删除自己的父节点的话,保留一下以便操作。当调用item的active时其实就是调用其回调函数。
关于MenuItem的更新图片:Menu触摸只是做了1.设置selected为true。2.放入图片2 。其实新图是由帧渲染出来的。
Item也是可以设置动画效果的。
- CocosGUI---Menu
- CocosGUI---Label
- Menu
- Menu
- menu
- menu
- menu
- Menu
- MENU
- menu
- menu
- Menu
- Menu
- menu
- menu
- Menu
- Menu
- Menu
- CocosGUI---Label
- SQL的join操作
- 【坑】strust2中突然访问不了了的原因
- 校验
- CodeForces 637A Voting for Photos
- CocosGUI---Menu
- Java 实现单例
- A
- C++学习笔记第一篇
- BZOJ 1198: [HNOI2006]军机调度
- (一)一个简单的取物游戏的算法
- CodeForces 637B Chat Order
- 使用ViewGroup实现RecyclerView
- Cocos场景切换和屏幕截取