Cocos2d-X顺便文本显示在以下三个:

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

CCLabelAtlas: 使用NodeAtlas优化渲染,适合常常变化的数字,比方分数,金钱之类的数字

CCLabelBMFont: 使用CCSpriteBatchNode,非常灵活,每一个字符都是一个精灵,能够对每一个字符进行操作,直接使用图片。将文字画在

设置文本的字体为CCLabelTTF

//在层上设置属性
bool Label::init()
{//初始化父类CCLayerCCLayer::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", "Arial", 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","HelveticaNeue-Bold","Zapfino"
};CCScene* Label::scene()
{//创建一个创建CCScene *s = CCScene::create();//创建一个层CCLayer* layer = Label::create();//将场景加到蹭上s->addChild(layer);//返回场景return s;
}//在层上设置属性
bool Label::init()
{//初始化父类CCLayerCCLayer::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()
{//初始化父类CCLayerCCLayer::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()
{//初始化父类CCLayerCCLayer::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()
{//初始化父类CCLayerCCLayer::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);//将label中的字符输入数组中CCArray* arr = label->getChildren();//选择数组中的字符,objectAtIndex(0)表示选择数组中的第0个字符CCSprite* sprite = (CCSprite*)arr->objectAtIndex(0);//字符旋转90度sprite->setRotation(90);return true;
}

运行结果:

使用CCLabelBMFont实现放大字符

//在层上设置属性
bool BMFont::init()
{//初始化父类CCLayerCCLayer::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);//将label中的字符输入数组中CCArray* arr = label->getChildren();//选择数组中的字符。objectAtIndex(0)表示选择数组中的第0个字符CCSprite* sprite = (CCSprite*)arr->objectAtIndex(0);//字符放大2倍sprite->setScale(2);return true;
}

运行结果:



版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/bhlsheji/p/4724455.html

Cocos2d-X字体相关推荐

  1. cocos2d-js ttf字体总结(史上最详细教程)。

    网上有关cocos2d引擎字体使用的教程可以说是满天飞我就不说了,本文主要讲解如何使用第三方.ttf字体. cocos2d-js 分web和jsb版本,首先讲解web版本如何使用第三方xxxx.ttf ...

  2. iphone开发每日一练【2011-10-11】

    为啥gamecenter在沙箱里好使,在正式环境中分数和成就都提交不了呢???? 关于cocos2D 音效失真的问题 CCGameBox问题 游戏中人物的动画效果是怎么做出来的? 双向链表 for O ...

  3. [每日100问][2011-10-11]iphone开发笔记,今天你肿了么

    [url=http://www.buildapp.net/iphone/show.asp?id=24500]为啥gamecenter在沙箱里好使,在正式环境中分数和成就都提交不了呢????[/url] ...

  4. 收集Cocos2d提供的字体!共57种

    很多游戏中,便于开发就会直接采用Cocos2d提供的字体库来使用,但是因为提供的种类很多,那么Himi利用一些时间整理了57种字体样式,这些我想足够你用了: 不多说下面一起来看看吧:(每张图对应11种 ...

  5. cocos2d Labels and Fonts 标签和字体(附:关于Hiero的二三事)

    Labels and Fonts 标签和字体 Introduction 介绍 cocos2d 支持 TTF (True Type Fonts) 标签和纹理 atlas 标签. Pros and Con ...

  6. 收集Cocos2d提供的字体

    为什么80%的码农都做不了架构师?>>>    原文地址:http://blog.csdn.net/xiaominghimi/article/details/6651818 很多游戏 ...

  7. 【iOS-Cocos2d游戏开发之四】独自收集Cocos2d提供的字体!共57种(有对照的字体图)

     李华明Himi 原创,转载务必在明显处注明: [黑米GameDev街区] 原文链接:  http://www.himigame.com/iphone-cocos2d/444.html 很多游戏中,便 ...

  8. 如何优化cocos2d程序的内存使用和程序大小:第一部分

    译者: 在我完成第一个游戏项目的时候,我深切地意识到"使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰".而我刚开始接触cocos2d的时候,社区 ...

  9. 添加类iOS cocos2d 2游戏开发实战(第3版)

    这两天一直在学习添加类之类的问题,现在正好有机会和大家讨论一下. 第1章 简介 1 1.1 第3版中的新增内容 2 1.2 选择ios版cocos2d的来由 3 1.2.1 收费 3 1.2.2 开源 ...

  10. (译)如何使用cocos2d来制作一个打地鼠的游戏:第一部分

    免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...

最新文章

  1. 模拟打字机,文字逐个出现
  2. RAID-5 恢复技术
  3. 2015年第六届蓝桥杯 - 省赛 - Java大学A组 - A. 熊怪吃核桃
  4. Spring对事物的实现
  5. springmvc中@RequestMapping的使用
  6. seata分布式事务原理_又见分布式事务之Seata
  7. bzoj 1050: [HAOI2006]旅行comf(尺取+最短路)
  8. docker[-compose] 连接内网其他容器地址
  9. JavaScript里的数组转化新方法Array.From
  10. 实战-全局唯一邀请码功能实现
  11. Z-TEK USB转422接口问题 RS422接口常见使用注意事项
  12. C++代码审查工具Cppcheck和TscanCode
  13. Matlab中break语句
  14. sip服务器支持alg,SIP利用Tunnel與ALG方法穿越NAT之效能分析
  15. travis ci java_Travis CI使用经验
  16. c语言 交互式电子白板案例,交互式电子白板教学案例——电子白板让修改习作不再难...
  17. Unity模拟毛笔字效果
  18. [iPad]手势及分页
  19. OpenGL:gl_ClipDistance和gl_CullDiatance
  20. 长调用与短调用 调用门

热门文章

  1. [转载]POJ 分类
  2. Jlink-v8 灯不亮重新烧写固件的办法
  3. WinXP系统下安装SQL SERVER 2000
  4. 从头学习DirectDraw
  5. 学习笔记 之 JQuery 基础语法
  6. 2018-04-13web自动化学习心得(1)
  7. Spring学习笔记之AOP配置篇(一) 注解配置
  8. AndroidManifest.xml文件详解(receiver)
  9. 技能系统设计笔记 3
  10. Emmet语法——HTML和CSS快速生成代码/VS code如何快速格式化代码