在这篇文章中,我介绍下cocos2dx中显示文字的三中方法,毕竟显示文字很常见,好了,CCLabelTTF,CCLabelAtlas,CCLabelBMFont。好了废话少说,我直接上代码:
//CCLabelTTF,字体用的是系统的,如果想用自定义的,需自己加载字体.ttf
CCLabelTTF *nameTTF=CCLabelTTF::create("大帝", "ArialRoundedMTBold", 50);
nameTTF->setPosition(ccp(200, size.height-200));
//设置颜色
nameTTF->setColor(ccc3(255, 0, 0));
this->addChild(nameTTF, 1);
//改变字符串,每次调用SetString一个新的OpenGL纹理将被创建,这意味着SetString与创建一个新的CCLabel一样慢。所以,如果你需要经常更新CCLabel对象,不要使用它,而是考虑使用CCLabelAtlas或CCBitmapFontAtlas来代替。
nameTTF->setString("新大帝");
//CCLabelAtlas,第一个参数是你要显示的字符,第二个参数是字符的图像,它是根据ASCII码排序的,第三个参数是每个字符的宽度,第四个参数是每个字符的高度,最后一个参数是你图像上的第一个字符
CCLabelAtlas *nameAtlas=CCLabelAtlas::create("10", "small_blue_number_level-hd.png", 16, 20, '0');
nameAtlas->setPosition(ccp(350, size.height-200));
nameAtlas->setScale(2.0);
this->addChild(nameAtlas, 1);
//改变字符,基本没什么消耗
// nameAtlas->setString("13");
//CCLabelBMFont,需要一个.fnt文件跟一个对应的png图像文件,可以把它理解为一个CCSpriteBatchNode,其实它就是继承CCSpriteBatchNode的
CCLabelBMFont *nameBMFont=CCLabelBMFont::create("Tracy","font09.fnt");
nameBMFont->setPosition(ccp(520, size.height-200));
nameBMFont->setScale(2.0);
this->addChild(nameBMFont, 1);
//得到每个字符,就像操作精灵一样
CCSprite *char_A=(CCSprite *)nameBMFont->getChildByTag(0);
效果如下图:
最后附上系统自带的字体:
//AppleGothic
//HiraKakuProN-W6
//HiraKakuProN-W3
//MarkerFelt-Thin
//STHeitiK-Medium
//STHeitiK-Light
//TimesNewRomanPSMT
//Helvetica-Oblique
//Helvetica-BoldOblique
//Helvetica
//Helvetica-Bold
//TimesNewRomanPS-BoldMT
//TimesNewRomanPS-ItalicMT
//TimesNewRomanPS-BoldItalicMT
//Verdana-Bold
//Verdana-BoldItalic
//Verdana
//Verdana-Italic
//Georgia-Bold
//Georgia
//Georgia-BoldItalic
//Georgia-Italic
//ArialRoundedMTBold
//TrebuchetMS-Italic
//TrebuchetMS
//Trebuchet-BoldItalic
//TrebuchetMS-Bold
//STHeitiTC-Light
//STHeitiTC-Medium
//GeezaPro-Bold
//GeezaPro
//Courier
//Courier-BoldOblique
//Courier-Oblique
//Courier-Bold
//ArialMT
//Arial-BoldMT
//Arial-BoldItalicMT
//Arial-ItalicMT
//STHeitiJ-Medium
//STHeitiJ-Light
//ArialHebrew
//ArialHebrew-Bold
//CourierNewPS-BoldMT
//CourierNewPS-ItalicMT
//CourierNewPS-BoldItalicMT
//CourierNewPSMT
//Thonburi-Bold
//AmericanTypewriter
//AmericanTypewriter-Bold
//STHeitiSC-Medium
//STHeitiSC-Light
//HelveticaNeue
//HelveticaNeue-Bold