大佬教程收集整理的这篇文章主要介绍了Cocos2d-X中的字体,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Cocos2d-X中显示文本的方式有下面三种:
CCLabelTTF: 使用系统字体,每个字符串会生成一个纹理,显示效率比较低下,适合不变化的文字
CCLabelAtlas: 使用NodeAtlas优化渲染,适合经常变化的数字,比如分数,金钱之类的数字
CCLabelBMFont: 使用CCSpriteBatchNode,很灵活,每个字符都是一个精灵,可以对每个字符进行操作,直接使用图片,将文字画在
设置文本的字体为CCLabelTTF
//在层上设置属性 bool Label::init() { //初始化父类CCLayer CCLayer::init(); //设置窗口的尺寸 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //创建一个字体,并且以此为字体的文字 CCLabelTTF* label = CCLabelTTF::create("This is Text","Arial",25); addChild(label); //设置文字的位置 setPosition(ccp(winSize.width/2,winSize.height/2)); return true; }
代码解析:
CCLabelTTF* label = CCLabelTTF::create("This is Text",25);
第一个参数:显示的文本
第二个参数:文本的字体
第三个参数:文本的大小
执行结果:
遍历所有的CCLabelTTF字体
在Label.h中添加下面的代码
#ifndef __Label_H__ #define __Label_H__ #include "cocos2d.h" USING_NS_CC ; class Label : public CCLayer { public: bool init(); static CCScene* scene(); bool ccTouchBegan(CCTouch*,CCEvent); void ccTouchMoved(CCTouch*,CCEvent*); CREATE_FUNC(Label); }; #endif
在Label.cpp中添加下面的代码
<span style="color:#000000;">#include "Label.h" USING_NS_CC ; //包含所有的CCLabelTITF字体 static const char* _font[] = { "AppleGothic","HiraKakuProN-W6","HiraKakuProN-W3","MarkerFelt-Thin","STHeitiK-Medium","STHeitiK-Light","TimesNewRomanPSMT","Helvetica-Oblique","Helvetica-BoldOblique","Helvetica","Helvetica-Bold","TimesNewRomanPS-BoldMT","TimesNewRomanPS-BoldItalicMT","TimesNewRomanPS-ItalicMT","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-BoldItalicMT","CourierNewPSMT","Thonburi-Bold","AmericanTypewriter","AmericanTypewriter-Bold","STHeitiSC-Medium","STHeitiSC-Light","HelveticaNeue","HelveticaNeue-Bold","Zapfino" }; CCScene* Label::scene() { //创建一个创建 CCScene *s = CCScene::create(); //创建一个层 CCLayer* layer = Label::create(); //将场景加到蹭上 s->addChild(layer); //返回场景 return s; } //在层上设置属性 bool Label::init() { //初始化父类CCLayer CCLayer::init(); //设置窗口的尺寸 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); int height = 0; //遍历CCLabelTIF中的所有字体 for(int i = 0; i < sizeof(_font) / sizeof(*_font); i++) { //创建一个字体,并且以此为字体的文字 CCLabelTTF* label = CCLabelTTF::create(_font[i],_font[i],25); //得到字体的宽度和高度 CCSize size = label->boundingBox().size; addChild(label); //设置文字的位置 label->setPosition(ccp(winSize.width / 2,height + size.height/2)); height += size.height; } setTouchEnabled(true); setTouchMode(kCCTouchesOneByOnE); return true; } bool Label::ccTouchBegan(CCTouch* touch,CCEvent) { return true; } void Label::ccTouchMoved(CCTouch* touch,CCEvent*) { // 获得触摸移动的距 CCPoint ptDelta = touch->getDelta(); // 只上下滑动的方法 setPositionY(getPositionY() + ptDelta.y); } </span>
执行结果:
使用CCLabelAtlas显示彩色的字体
首先需要一张png格式的图片,并且将图片放在resource目录中
然后添加下面的代码
//在层上设置属性 bool LabelAtlas::init() { //初始化父类CCLayer CCLayer::init(); //设置窗口的尺寸 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //创建一个Atlas字体 //第一个参数:显示的内容 //第二个参数:图片名 //第三个参数:图片的宽度 //第四个参数:图片的高度 //第五个参数:图片中第一个字的ASCALL码值 CCLabelAtlas* label = CCLabelAtlas::create("18937302","labelatlasimg.png",24,32,'0'); addChild(label); //设置文字显示的位置 label->setPosition(winSize.width/2,winSize.height/2); return true; }
执行结果:
在上面的代码中添加下面的代码实现修改文本
//改变显示的数字 label->setString("87899");
执行结果:
使用CCLabelBMFont:显示彩色的字
首先需要一张png格式的图片,并且将图片放在resource目录中
然后添加下面的代码
//在层上设置属性 bool BMFont::init() { //初始化父类CCLayer CCLayer::init(); //设置窗口的尺寸 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //设置文字显示的位置 CCPoint ptCenter = ccp(winSize.width / 2,winSize.height / 2); //创建一个Atlas字体 //第一个参数:显示的内容 //第二个参数:图片文件的描述文件名 CCLabelBMFont* label = CCLabelBMFont::create("abc","bitmapFontTest.fnt"); addChild(label); //设置文字显示的位置 label->setPosition(ptCenter); return true; }
执行结果:
使用CCLabelBMFont实现旋转字符
//在层上设置属性 bool BMFont::init() { //初始化父类CCLayer CCLayer::init(); //设置窗口的尺寸 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //设置文字显示的位置 CCPoint ptCenter = ccp(winSize.width / 2,"bitmapFontTest.fnt"); addChild(label); //设置文字显示的位置 label->setPosition(ptCenter); //将label中的字符输入数组中 CCArray* arr = label->getChildren(); //选择数组中的字符,objectATindex(0)表示选择数组中的第0个字符 CCSprite* sprite = (CCSprite*)arr->objectATindex(0); //字符旋转90度 sprite->setRotation(90); return true; }
执行结果:
使用CCLabelBMFont实现放大字符
//在层上设置属性 bool BMFont::init() { //初始化父类CCLayer CCLayer::init(); //设置窗口的尺寸 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //设置文字显示的位置 CCPoint ptCenter = ccp(winSize.width / 2,"bitmapFontTest.fnt"); addChild(label); //设置文字显示的位置 label->setPosition(ptCenter); //将label中的字符输入数组中 CCArray* arr = label->getChildren(); //选择数组中的字符,objectATindex(0)表示选择数组中的第0个字符 CCSprite* sprite = (CCSprite*)arr->objectATindex(0); //字符放大2倍 sprite->setScale(2); return true; }
执行结果:
以上是大佬教程为你收集整理的Cocos2d-X中的字体全部内容,希望文章能够帮你解决Cocos2d-X中的字体所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。