在这篇文章中,我介绍下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