小for的Cocos2d-x学习笔记与感悟2之基本控件使用(1)
来源:互联网 发布:博拉网络招聘 编辑:程序博客网 时间:2024/04/29 23:19
本来想在本笔记前加入对HelloWorld这个框架的理解的,看了看,引擎自身提供的注释很完善了,而且一看就明白,所以就去掉那个了。
本文小for原创,转载请注明出处。
小for会在这篇博客中记录Cocos2d-x基本控件的使用,只记录CCSprite、CCLabelTTF、CCMenu三个,下一篇中会再记录三个,剩下的就用到的时候再去找度娘和谷哥了。
其实,这三个控件在HelloWorld中都已经使用到了,小for只是在这里梳理一下,下面的记录中将会忽略HelloWorld代码。所以,第一步,在新建的mHelloWorld中删除HelloWorldScene中init函数中的代码(说得好复杂…),让HelloWorld::init()变成下面这样
bool HelloWorld::init(){return true;}
这时候调试运行的话,会是黑压压的一片:
既然在这里删除了,就得从这里再加回来,CCSprite和CCLabelTTF的代码都在init中实现,CCMenu部分不是。
1、 CCSprite
顾名思义,这个控件就是显示和控制一个精灵的,小for现在看来,一个精灵实际上就是一张图片。
先看代码
//声明CCSprite对象,并为其指明图片对象为cocos.jpgCCSprite *sprite=CCSprite::create("cocos.jpg");//设置sprite的位置,左下角是坐标原点sprite->setPosition(ccp(0,0));//设置锚点位置为(0,0),即cocos.jpg这张图片的左下角sprite->setAnchorPoint(ccp(0,0));//加入到当前CCLayer中this->addChild(sprite);
以上代码就把这张图片加载进去了
图片资源是这个,另存为可以使用哦
通常,加载一个精灵只需要加载图片—>设置锚点(可选)—>设置位置—>addChild(可以指定)就可以了。在Cocos2d-x中,所有的设置位置都必须在坐标前加上ccp,就像上面的代码一样ccp(0,0)表示坐标原点,向左和向上为坐标轴正方向。坐标点是一个CCPoint对象(其实点都是),如
CCPoint point=sprite->getPosition();
可以得到sprite的坐标位置。
既然加入了,那肯定就能移除,嘿嘿:
this->removeChild(sprite,true);//后面一个bool参数是选择是否clean这个对象
基础的东西就这些,以后会和Action、Box2D等连接起来,到时候再看。
2、 CCLabelTTF
CCLabelTTF的使用其实和CCSprite非常相似了,因此,小for的笔记就比较简单。这里先获取屏幕大小,然后将CCLabelTTF放到屏幕正中间。具体实现如下
//利用导演类取得图片大小CCSize size=CCDirector::sharedDirector()->getWinSize();//声明CCLabelTTF对象,三个参数分别为lable内容、字体、字号CCLabelTTF *lable=CCLabelTTF::create("Hello My Cocos2d-x World","Arial",24);//屏幕正中间位置CCPoint pos=ccp(size.width/2,size.height/2);//设置位置lable->setPosition(pos); this->addChild(lable);
效果图将会如下
这里小for们注意到,小for们没有设置锚点,且文字居中了,说明控件(All)默认的控件正中为锚点。另外,文字在之前图片的上方,说明后加载的控件会覆盖之前相同位置的图片,实际上,小for们在addChild 的时候,可以设置层数,例如
this->addChild(sprite,2);会覆盖掉与this->addChild(sprite,1)想重合的部分。
还有一点,此处的CCLabelTTF貌似暂时不支持中文,这里很纠结,上次做课程设计的时候,小for全部文字都是用的图片,看了网上的一些方法,暂时还没有解决。等有空了好好了研究下,弄成一个通用的方法给大家直接调用!大家如果弄出来了也共享给小for用下哈!
3、 CCMenu
相对于前两者,CCMenu就相对要复杂一点了,不过很容易理解它嘛,毕竟它已经涉及到“事件”了。CCMenu实际上就可以当作Button使用了,并且在按键响应上做得比Android应用开发好多了(Android使用selector,代码量忒大)。
首先,小for们需要在init中声明这个对象,并为它设置一些内容:
//声明一个CCMenuItemImage,并放到CCMenu中//声明CCMenuItemImage对象,四个参数分别为点击前图片、点击后图片、上下文对象(^-^)、回调函数CCMenuItemImage *btnImg=CCMenuItemImage::create("CloseNormal.png", "CloseSelected.png",this,menu_selector(HelloWorld::menuCloseCallback));//取得btn的大小CCSize bSize=btnImg->getContentSize();//取得btn的height的一半bSize.height=bSize.height/2;//得到lable下面刚好放下btn的点CCPoint pos2=ccp(pos.x,pos.y-bSize.height); CCMenu* btn= CCMenu::create(btnImg, NULL); btn->setPosition( pos2 );this->addChild(btn);
然后小for们需要在HelloWorldScene.h中声明回调函数,并在HelloWorldScene.cpp中实现。
① .h文件中
void menuCloseCallback(CCObject* pSender);
② .cpp文件中(不是init中哦)
void HelloWorld::menuCloseCallback(CCObject* pSender){ //点击时执行如下这里}
效果会是这样(点击有惊喜,嘿嘿)
耶!正文完成了,六点过了,差不多该去吃完饭了,小for最喜欢的就是吃了^-^。今天还是听热情的,一下子发了两篇博文,虽然都是最基础的内容,却是很有用的哦。上午一学弟知道小for在学习Cocos2d-x的时候建议小for不要学习游戏(因为小for的数学不大好,实话),但是,根据这段时间来小for对游戏开发的理解,基本的开发还是不需要微积分那些高等数学的知识的,何苦,就算真的遇到了也可以找一些大师问问嘛,就算去学那几个知识点也可以啊。菜鸟拙见,小for觉得做这事还是需要有信心的,小for已经做好迎接问题的准备了!小for在这里祝大家周末愉快哦,同时也在这里谢谢学弟的提醒。
【博文没时间修改了,有问题大家见谅哈!】
- 小for的Cocos2d-x学习笔记与感悟2之基本控件使用(1)
- 小for的Cocos2d-x学习笔记与感悟3之基本控件使用(2)
- 小for的Cocos2d-x学习笔记与感悟10之俄罗斯方块(2)
- 小for的Cocos2d-x学习笔记与感悟9之俄罗斯方块(1)
- 小for的Cocos2d-x学习笔记与感悟1之环境搭建
- 小for的Cocos2d-x学习笔记与感悟5之拖动(Touch)事件
- 小for的Cocos2d-x学习笔记与感悟13之从新建项目到打包成APK(Cocos2d-x 2.2.1)
- 小for的Cocos2d-x学习笔记与感悟4之单击事件
- 小for的Cocos2d-x学习笔记与感悟6之Action
- 小for的Cocos2d-x学习笔记与感悟7之界面刷新
- 小for的Cocos2d-x学习笔记与感悟8之场景切换和声音控制
- 小for的Cocos2d-x学习笔记与感悟11之文件保存和中文显示
- 小for的Cocos2d-x学习笔记与感悟12之SQLite数据库
- cocos2d-x 学习笔记(3)cocos2d-x 创建基本控件 及小动画
- Cocos2d-x学习笔记(2)- 场景的基本元素
- cocos2d-x学习笔记——各种遍历与范围for语句的使用
- 【Cocos2d-X开发学习笔记】第13期:动作类之基本动作的使用(上)
- 【Cocos2d-X开发学习笔记】第14期:动作类之基本动作的使用(下)
- 装饰设计模式
- 教你如何修改Android手机的按键音/照相音/字体等
- Android通信模块
- 关于Scanner的useDelimiter使用其它字符做为分隔符的详细用法及特别之处
- maven新手入门安装和MyEcllipse下创建第一个maven项目
- 小for的Cocos2d-x学习笔记与感悟2之基本控件使用(1)
- 一只羊的问题
- Linux系统编程学习之《编程前的准备》
- BindService
- linux 下重置root的密码
- 什么是JNDI
- CF-161D Distance in Tree
- C#连接SQL Server的方法
- 手机上网的秘密1