首页 > 代码库 > 【cocos2d-x学习笔记】三种文字类、批处理精灵、C++的四种cast

【cocos2d-x学习笔记】三种文字类、批处理精灵、C++的四种cast

三种显示文字的类

CCLabelTTF, CCLabelAtlas, CCLabelBMFont

 

CCLabelTTF:使用系统字体每个字符串会生成一个纹理,显示效率比较低下。适合无变化的文字

CCLabelAtlas: 使用NodeAtlas优化渲染,适合经常变化的数字,比如分数,金钱。

CCLabelBMFont: 使用CCSpriteBatchNode,很灵活,每个字符都是一个精灵,可以对每一个字符进行操作。

 

CCLabelAtlas *lable = CClabelAtlas::create("12434", "labelatlasing.png", 24, 32, ‘0‘);  根据啊思科码,顺序不能变

 

CCLabelBMFont *label = CCLabelBMFont::create("abc", "bitmapFontTest.fnt");  根据图片来弄字体,原理是批处理精灵

CCArray *arr = label->getChildren();          获取所有字符

CCSprite *spriteA = (CCSprite *)arr->objectAtIndex(0);   0表示第一个字符

spriteA->setRotation(90);      每个字符都能进行单独的操作

 

PS:直接使用图片,将文字画在图片上(局限: 分辨率、更换麻烦等)

CCSpriteBatchNode也是一个容器,但是他只能包容CCSprite对象,而且要求这些精灵来自同一个纹理。

CCSpriteBatchNode *batch = CCSpriteBatchNode::create("CloseNormal.png");

addChild(batch);

CCSprite *sprite = CCSprite::createWithTexture(batch->getTexture());

batch->addChild(sprite);

 

C++的4种cast

C++引入cast是为了减少因类型转换造成的错误,能在编译、运行时期检查转换问题

 

static_cast 是在编译时期检查,cast两边要求有一边可以做隐式转化,才能用static_cast

dynamic_cast 是在运行时期检查,用于具有虚函数的父类和子类之间的类型转换

const_cast 把常量转换为非常量

reinterpret_cast  这个叫做重解释,没有什么用。

 

【cocos2d-x学习笔记】三种文字类、批处理精灵、C++的四种cast