Cocos2d-x 3.9教程
2. 菜单项的基本使用:
在Cocos2d-x中,菜单(Menu)实际上是一个层(Layer),它由内部的多个菜单条目构成的。菜单的条目种类有:
1.1. MenuItemLabel
标签条目,先创建标签(Lable),再用它创建标签条目:
auto label = Label::createWithTTF("Hello World","fonts/Marker Felt.ttf", 24);//创建label
MenuItemLabel *labelItem =MenuItemLabel::create(label);//根据label创建MenuItem
1.2. MenuItemSprite
精灵条目,先创建两个精灵(Sprite),再通过它们(普通状态和选择状态的Sprite)创建精灵条目:
Sprite *spritenormal = Sprite::create("CloseNormal.png");//普通状态Sprite
Sprite *spriteselected = Sprite::create("CloseSelected.png");//选中状态Sprite
MenuItemSprite *menuitemSprite =MenuItemSprite::create(spritenormal, spriteselected,CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));//根据他们创建MenuItem
1.3. MenuItemImage
MenuItemImage是MenuItemSprite的子类,在创建时根据两幅图片来创建MenuItemImage,其余用法跟MenuItemSprite类似。
1.4. MenuItemToggle
轮换按钮类型菜单项,它可以容纳任意类型的菜单项(MenuItem),每按下一次菜单项后,会切换到下一个菜单项,循环往复。比如我们可以用于音乐的开和关。
使用方法是先创建其他类型的MenuItem对象,再添加到MenuItemToggle中,最后将其放入菜单中:
MenuItemToggle *menuToggle =
MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::emptyMenuCallback,
this), closeItem, labelItem, closeItem2,NULL);
注意,MenuItemToggle本身绑定了一个回调函数,在点击当前菜单项时,执行绑定的这个回调函数,而各菜单项自己绑定的回调函数将不起作用了!
1.5. 菜单项组合生成菜单
所有类型的MenuItem创建完后,需要添加至Menu中,才能当做菜单使用:
auto menu = Menu::create(closeItem, labelItem, closeItem2, NULL);//将所有的菜单项放入菜单中
menu->alignItemsVertically();//设置菜单项的排列方式(垂直排列)
menu->setPosition(Vec2(visibleSize.width / 2, visibleSize.height/2));//设置菜单的位置
this->addChild(menu, 1);//将菜单添加进Layer中