在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,有什么错误的地方,请大家指出,共同学习进步