[置顶] cocos2dX UI控件之CCMenu

说道游戏, 有个我们不得不说的控件, 菜单控件(CCMenu), 平常我们与游戏很多的交互都来自于菜单, 菜单是游戏中不可或缺的一部分, 我们今天就来看看菜单控件, 

用法:

CCMenu::create( 菜单项1, 菜单项2..., NULL);

我们开始创建菜单( 旁白: 骗子, 根本就不行嘛)

别急, 我们先来看看参数, 哦  又是一个可变长参数, 结尾又要用NULL表示, 前面的参数是传进来的菜单项, 表示我们创建了哪些菜单

我们先来看看有哪些

CCMenuItemImage::create( "没有点击的时候显示的图片", "点击的时候显示的图片", 目标对象(一般写this), menu_selector(回调函数));//用来创建图片菜单

CCMenuItemFont::::create( "显示的文字",  目标对象(一般写this), menu_selector(回调函数));//用来创建文字菜单, 显示的文字也可以使用字体标签, 当然, 我们得换成CCMenuItemLabel

CCMenuItemToggle::createWithTarget( 目标对象(一般写this), menu_selector(回调函数), 可变长参数表(CCMenuItem对象), NULL);//用来创建开关菜单

我们找两张图片啊:

[置顶] cocos2dX UI控件之CCMenu_第1张图片

再写菜单之前, 我们创建两个函数( 旁白: 明明就是三个嘛), 用来点击菜单时候的调用这些函数:

在头文件里加上:

void menuCloseCallback(CCObject* pSender);
	void font( CCObject* pSender);
	void toggle( CCObject* pSender);

在cpp文件里实现:

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    CCLOG( "imageMenu");
}

void HelloWorld::font( CCObject* pSender)
{
	CCLOG( "<span style="font-family: Arial, Helvetica, sans-serif;">fontMenu</span><span style="font-family: Arial, Helvetica, sans-serif;">");</span>
}

void HelloWorld::toggle( CCObject* pSender)
{
	CCLOG( "<span style="font-family: Arial, Helvetica, sans-serif;">toggleMenu</span><span style="font-family: Arial, Helvetica, sans-serif;">");</span>
}


我在函数里就不实现过多的内容, 就在输出打印一下提示信息, 所以待会儿我们可以在输出里面看见我们打印的文字

CCMenuItemImage* imgMenu = CCMenuItemImage::create( "CloseNormal.png", 
		"CloseSelected.png", 
		this, 
		menu_selector(HelloWorld::menuCloseCallback));							//创建图片菜单
	CCMenuItemFont* fontMenu = CCMenuItemFont::create( "Play Game", 
		this, 
		menu_selector(HelloWorld::font));										//创建文字菜单
	CCMenuItemToggle* toggleMenu = CCMenuItemToggle::createWithTarget( this,	//创建开关菜单
		menu_selector(HelloWorld::toggle), 
		CCMenuItemFont::create( "on"), 
		CCMenuItemFont::create( "off"), 
		NULL);

	CCMenu* menu = CCMenu::create( imgMenu, fontMenu, toggleMenu, NULL);		//创建菜单, 将菜单项加载进来
	menu->setPosition( ccp( visibleSize.width / 2, visibleSize.height / 2));
	addChild( menu);

[置顶] cocos2dX UI控件之CCMenu_第2张图片

我们看看效果:

[置顶] cocos2dX UI控件之CCMenu_第3张图片

咦, 好像不对啊, 怎么说有的菜单都挤在一起了啊, 原来我们没有对每个菜单项设置位置, 我们可以对每个菜单项设置位置哦, 

其实, cocos2dX还为我们提供了其他解决办法, 例如纵向对其之类的,  看看这个

//	menu->alignItemsHorizontally();         // 垂直对齐
	menu->alignItemsVertically();           // 水平对象
//	menu->alignItemsInColumns(2, 1, NULL);  // 两行,两列,一列


看看, 这是个好东西吧, 自动就对齐了:


我们来点击每个菜单看看效果,


 点击图片菜单, 按下的时候两张图片切换了, 并且在输出打印了imgMenu, 

点击文字菜单, 文字放大, 并且输出打印了fontMenu

点击文字菜单, 文字改变, 并且输出打印了toggleMenu


嗯, 今天也差不多啦, CCMenu很实用简单的, 还是那句话, 希望大家多练习


你可能感兴趣的:(cocos2dx,menu,函数回调,开关菜单,菜单对齐)