您的位置:首页 >> Cocos2d-x >> 和屌丝一起学cocos2dx-CCMenu菜单

和屌丝一起学cocos2dx-CCMenu菜单

[ 孤狼 | 2015-02-09 17:10:01 | Cocos2d-x | 2746°C | 0条评论 ]
声 明

本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。
gl.paea.cn版权所有。


       大家好,我是孤狼,又见面了,欢迎回到“和屌丝一起学cocos2dx教程”,上节我们说到了怎么把一个win下的程序转换到android下,你都会了吗?不会的话,记得要多练习哦还有不懂的可以去看看教程“和屌丝一起学cocos2dx-win移植android”。好了,这节我们讲一下cocos2dx里面的菜单。

       菜单是一个项目中最基本的东西,因为你不论什么项目都缺少不了菜单,所以cocos2dx也给了我们很多方法来创建菜单,这样我们就能做出更好的菜单来了,当然咯,我们现在还只是学习阶段,我们的主要任务还是学会用它,至于做出来一个很好的菜单界面,那是后面我们项目期要做的事情。


       首先呢,我们还是先来创建一个项目,就命名为Menudemo吧。


【一】:创建菜单


       创建菜单的方法在之前估计大家都遇到了,就是我们在做“和屌丝一起学cocos2dx-自己的Hello World”的时候就已经用过一次了,这里还是要和大家说下,菜单只要创建一个就行了。我们更多的是创建不同的菜单项。所以创建菜单的工作一般都是放在创建玩菜单项后面的。

方法:

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

注意最后一定要加个空项,告诉他没了可以开始创建了哦。


【二】:创建菜单项


       在cocos2dx中,我们有5中菜单项可以选择。它们分别是:CCMenuItemFont(字体菜单项)、CCMenuItemImage(图片菜单项)、CCMenuItemLabel(文本菜单项)、CCMenuItemSprite(精灵菜单项)、CCMenuItemToggle(开关菜单项)。下面我们就开始来学习他们的用法吧。


1.CCMenuItemFont(字体菜单项)

方法1:

       CCMenuItemFont::create(选项文字,触发目标对象,触发目标函数);

方法2:

       CCMenuItemFont::create(选项文字);


2.CCMenuItemImage(图片菜单项)

方法1:

       CCMenuItemImage::create(默认显示的图片,点击时显示的图片,触发目标对象,触发目标函数);


3.CCMenuItemLabel(文本菜单项)

方法1:

       CCMenuItemLabel::create(CCLableTTF对象,触发目标对象,触发目标函数);


4.CCMenuItemSprite(精灵菜单项)

方法1:

       CCMenuItemSprite::create(默认显示的精灵对象,选中时显示的精灵对象,触发目标对象,触发目标函数);


5.CCMenuItemToggle(开关菜单项)

方法1:

       CCMenuItemToggle::createWithTarget(触发目标对象,触发目标函数,CCMenuItem对象的可变参数列表);


【三】:实践


       我们这次一次做5个按钮,每个按钮都绑定已有的函数关闭函数。

       那么我们开始。



//获取尺寸

CCSize mysize=CCDirector::sharedDirector()->getWinSize();

//文字菜单项

CCMenuItemFont * mymenu1=CCMenuItemFont::create("文字菜单1");

mymenu1->setPosition(ccp(mysize.width/2,mysize.height-40));

CCMenuItemFont * mymenu2=CCMenuItemFont::create("文字菜单2",this,menu_selector(Menu::menuCloseCallback));

mymenu2->setPosition(ccp(mysize.width/2,mysize.height-80));

//图片菜单项

CCMenuItemImage * mymenu3 = CCMenuItemImage::create("CloseNormal.png","CloseSelected.png",this,menu_selector(Menu::menuCloseCallback));

mymenu3->setPosition(ccp(mysize.width/2,mysize.height-120));

//文本菜单项

CCLabelTTF * ttf1=CCLabelTTF::create("文本菜单","Helvetica",24);

CCMenuItemLabel * mymenu4=CCMenuItemLabel::create(ttf1,this,menu_selector(Menu::menuCloseCallback));

mymenu4->setPosition(ccp(mysize.width/2,mysize.height-160));

//精灵菜单项

CCSprite * mysprite1=CCSprite::create("CloseSelected.png");

CCSprite * mysprite2=CCSprite::create("CloseNormal.png");

CCMenuItemSprite * mymenu5=CCMenuItemSprite::create(mysprite1,mysprite2,this,menu_selector(Menu::menuCloseCallback));

mymenu5->setPosition(ccp(mysize.width/2,mysize.height-200));

//开关菜单项

CCMenuItemFont * font1=CCMenuItemFont::create("开");

CCMenuItemFont * font2=CCMenuItemFont::create("关");

CCMenuItemToggle * mymenu6=CCMenuItemToggle::createWithTarget(this,menu_selector(Menu::menuCloseCallback),font1,font2,NULL);

mymenu6->setPosition(ccp(mysize.width/2,mysize.height-240));


//创建菜单

CCMenu* mymenu = CCMenu::create(mymenu1,mymenu2,mymenu3,mymenu4,mymenu5,mymenu6,NULL);

mymenu->setPosition(CCPointZero);

this->addChild(mymenu, 1);



       这里和大家说下,可能很多人这里运行后时乱码,解决乱码的方式也说过,直接改ccp文件编码为utf-8,但是如果你改了之后,可能本来正确的句子会变成错的,生成的时候会报错。所以以后我们在做菜单的时候,还是尽量使用图片形式,这样既避免了中文的干扰,也可以一定程度上美化界面。另外注意中文注释最好上下都打上空行,避免靠的近照成解析错误。

       最后的运行效果。出来菜单1没有绑定事件点击后没有效果,其他的都可以直接关闭程序。好了。Demo我打包好,放在最下面,需要的同学可以直接下载下去生成看看。



DEMO下载


转载请注明出处:http://gl.paea.cn/n.php?n=11
 
如您看得高兴,欢迎随意投喂,让我们坚持创作!
赞赏一个鸡腿
还没有人留下遗迹
综合 · 搜索