Cocos2dx游戏教程(六):“见缝插针”,菜单Menu与C++11新特性

本文深入解析Cocos2dx中菜单(Menu)及菜单项(MenuItem)的使用,介绍菜单项状态、回调函数机制,并详细说明不同类型的菜单项及其在游戏开发中的应用。同时,文章探讨了C++11新特性std::function、std::bind和std::placeholders在Cocos2dx回调函数中的运用。

上一节我们已经实现了第二个场景界面,最后按下按钮发现没有反应是不是,这一节将会给大家介绍下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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值