首页 > 代码库 > 【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