最简单的文字菜单
// MenuItemFont::create创建四个菜单项,第一个参数是菜单项名称,第二参数是点击该项触发的回调函数
auto item1 = MenuItemFont::create("No.1", CC_CALLBACK_1(HelloWorld::gofind, this));
auto item2 = MenuItemFont::create("No.2", CC_CALLBACK_1(HelloWorld::gofind, this));
auto item3 = MenuItemFont::create("No.3", CC_CALLBACK_1(HelloWorld::gofind, this));
auto item4 = MenuItemFont::create("No.4", CC_CALLBACK_1(HelloWorld::gofind, this));
// Menu创建一个菜单目录把菜单项都添加进去,以null结束
auto menu = Menu::create(item1, item2, item3, item4, NULL);
menu->alignItemsVertically();
this->addChild(menu);
最简单的图形菜单
// 把创建菜单和菜单项放在一步执行,p1.png是菜单项原始的图片p2.png是被点击时的图片,第三个参数是lamda表达式形式的回调函数
auto menu = Menu::create(MenuItemImage::create("p1.png", "p2.png", [](Ref*pSender) {log("ImageMenu"); }), NULL);
addChild(menu);
简单的精灵菜单
// 把创建菜单和菜单项放在一步执行,前两个参数是两个精灵,第三个参数是lamda表达式形式的回调函数
auto sp1 = Sprite::create("CloseSelected.png");
auto sp2 = Sprite::create("CloseNormal.png");
auto menu = Menu::create(MenuItemSprite::create(sp1, sp2, [](Ref*) { log("sprite"); }), NULL);
addChild(menu);
触发器菜单
// 先创建两个菜单项
auto item1 = MenuItemImage::create("CloseSelected.png", "CloseNormal.png");
auto item2 = MenuItemImage::create("CloseNormal.png", "CloseSelected.png");
// 创建一个触发器菜单,这样就把两个菜单项绑定,点击第一个菜单项就会变成第二个菜单项,在点击又会变成第一个菜单项,第三个参数是lamda表达式形式的回调函数
auto toggle = MenuItemToggle::createWithCallback([](Ref*) {}, item1, item2, nullptr);
// 在加入到menu菜单目录
auto menu = Menu::create(toggle, nullptr);
addChild(menu);
总结:不管创建任何菜单,都需要创建菜单项,不同的菜单只是创建菜单项的方式不同,最后加入到Menu类的菜单目录这个过程是相同的。