您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x学习笔记(二)基本概念与文本

2013-03-08 10:22 375 查看
在cocos2d-x引擎中,有几个概念:

导演(CCDirector)在cocos2d-x引擎中,导演类是游戏的组织者和领导者,

导演制定规则让游戏内的场景,布景,和人物角色有序的运行

摄像机(CCCamera),每个节点都需要使用摄像机,

当节点发生缩放,旋转,和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机重新渲染。

场景(CCScene)在游戏里,场景就是关卡,关卡有人物和背景构成

布景(CCLayer)从概念上说,布景就是场景里的背景,其实就是层次的概念,

这种概念在kjava时代就有,就是手动的把游戏中的场景分层(也有靠地图编辑器实现这一功能的)

精灵(CCSprite)当然包括英雄、敌人、npc、机关等

动作(CCAction),就是精灵(CCSprite)拥有的动作



-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

cocos2d-x添加文本的方式有三种(CCLabelTTF、CCLabelAtlas、CCLabelBMFont)

它们可以在层或精灵中添加文字

CCLabelTTF:

CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
CC_BREAK_IF(! pLabel);
// Get window size and place the label upper.
CCSize size = CCDirector::sharedDirector()->getWinSize();
pLabel->setPosition(ccp(size.width / 2, size.height - 50));

// Add the label to HelloWorld layer as a child layer.
this->addChild(pLabel, 1);

参数1:需要显示的文本

参数2:需要显示的字体

参数3:字体的大小

常用函数:setString

CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL纹理将会被创建,

这意味着setString 和创建一个新的标签一样慢。

所以,当你需要频繁的更新它们的时候,尽可能的不用去使用标签对象。

而应该使用CCLabelAtlas或者是CCLabelBMFont

CCLabelAtlas:

CCLabelAtlas *pAtlas = CCLabelAtlas::create("0123456789","labelatlas.png",16,24,'.');
pAtlas->setPosition(ccp(size.width/2,size.height-80));
this->addChild(pAtlas,1);

参数1:需要显示的文本

参数2:字符的图像文件

参数3:字符的宽度

参数4:字符的高度

参数5:设定图像文件的起始字符



在示例程序(HelloWorld)的左下角显示帧率的数字就是用的CCLabelAtlas,

因为帧率一直在变,使用CCLabelTTF的话效率太低,

因为只是数字所以也犯不上使用CCLabelBMFont 加载那么大的文字图像。

CCLabelBMFont:

CCLabelBMFont *pBMFont = CCLabelBMFont::create("HelloWorld","dmTest.fnt");
pBMFont->setScale(0.8f);
pBMFont->setPosition(ccp(size.width/2,size.height-120));
this->addChild(pBMFont,1);

参数1:需要显示的文本

参数2:字体坐标文件(*.fnt)

常用函数setScale(float);

此函数没法指定字体的字号,但可以用 scale 属性进行缩放来调整大小。

.fnt文件在windows下可以使用angelCode工具完成

刚接触cocos2d-x,有什么错误的地方,请大家指出,共同学习进步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: