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,两张图片分别表示按下前后的显示效果MenuItemImageMenuItem孙子继承类

 

响应:

由每个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也是可以设置动画效果的。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果6s屏幕变黄怎么办 苹果8背光坏了怎么办 苹果六背光坏了怎么办 苹果5s蓝屏死机怎么办 苹果6s突然黑屏怎么办? 苹果6s经常死机怎么办 苹果6s没有背光怎么办 苹果7白屏死机怎么办 苹果6p屏膜失灵怎么办 苹果7p屏幕卡死怎么办 苹果7p手机死机怎么办 苹果6s死机了怎么办啊 6s死机了关不了怎么办 爱疯7死机了怎么办 苹果11.4系统老死机怎么办 苹果6震动坏了怎么办 苹果6手机死机了怎么办 苹果x耗电太快怎么办 苹果6升级11.3卡怎么办 苹果6splus耗电快怎么办 苹果手机系统升级后反应慢怎么办 苹果8听筒声音小怎么办 苹果6s通话声音小怎么办 苹果手机通讯录丢失了怎么办 苹果换id通讯录没有了怎么办 华为p7 更新重启怎么办 打电话的图标没了怎么办 苹果手机wifi信号弱怎么办 没电脑想装wifi怎么办 阿巴町手表二维码丢了怎么办 儿童手表二维码丢了怎么办 电话手表二维码丢了怎么办 360儿童手表二维码丢了怎么办 喜书郎电话手表二维码丢了怎么办 微信充话费充错号码怎么办 话费冲到了副卡怎么办 冲话费冲错了怎么办 微信支付未到账怎么办 速卖通修补配件到国外怎么办 速卖通流量低怎么办 速卖通被判定重复铺货怎么办