上一节我们已经实现了第二个场景界面,最后按下按钮发现没有反应是不是,这一节将会给大家介绍下Cocos2dx另一个重要的对象,菜单Menu。
一、Menu介绍
提到Menu,不得不提到MenuItem,MenuItem继承自Node,所以它的子类菜单项都可以使用Node的相关操作。
MenuItem是所有菜单项的父类,建议不要直接使用该类,因为它并不包含具体显示的功能。
作为其它菜单项的父类,主要提供了一下三个功能:
(1)提供了基本按钮的状态:正常、选中、禁用。
(2)为按钮实现了基本的回调函数机制。点击按钮后,就会调用执行相应的回调函数,上文两个新增的函数就是回调函数哦。
//开始游戏
void onStartBtnPressed(Ref* pSender);
//选择关卡
void onSelectBtnPressed(Ref* pSender);
菜单项的子类可以分成三类,总共六个:
(1)文字菜单项:MenuItemLabel、MenuItemAtlasFont、MenuItemFont;
(2)图片菜单项:MenuItemSprite、MenuItemImage;
(3)切换菜单项:MenuItemToggle。
而关于各个菜单项的区别大家可以参考cocos2dx的源代码,源代码是最好的老师~
我们在上篇教程中有如下的代码,实现方式如下
auto selectBtn = MenuItemImage::create("menu/select.png", "menu/select.png");
selectBtn->initWithCallback(CC_CALLBACK_1(GameMenuScene::onSelectBtnPressed, this));
selectBtn->setPosition(visibleSize.width / 2 + 20, visibleSize.height - 660);
auto menu = Menu::create(startBtn, selectBtn, NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu);
注意如下两行
selectBtn->initWithCallback(CC_CALLBACK_1(GameMenuScene::onSelectBtnPressed, this)); //回调方法
auto menu = Menu::create(startBtn, selectBtn, NULL);//注意最后一定要加个空项,告诉他没了可以开始创建了。
我没在回调方法里面添加输出信息看一下
//开始游戏
void GameMenuScene::onStartBtnPressed(Ref* pSender) {
//需要跳转到游戏界面
CCLOG(

本文深入解析Cocos2dx中菜单(Menu)及菜单项(MenuItem)的使用,介绍菜单项状态、回调函数机制,并详细说明不同类型的菜单项及其在游戏开发中的应用。同时,文章探讨了C++11新特性std::function、std::bind和std::placeholders在Cocos2dx回调函数中的运用。
:“见缝插针”,菜单Menu与C++11新特性&spm=1001.2101.3001.5002&articleId=104789934&d=1&t=3&u=3c08a4dd8f3446ff9c917e8f458fc54d)
1359

被折叠的 条评论
为什么被折叠?



