Cocos2d-x 3.0后推出了新的标签类Label,这种标签通过使用FreeType[1]来使它在不同的平台上有相同的视觉效果。由于使用更快的缓存代理,它的渲染也将更加快速。Label提供了描边和阴影等特性。
Label类的类图如下图所示:
创建Label类静态create函数常用的有如下几个:
- static Label* createWithSystemFont(conststd::string &text, //是要显示的文字
- const std::string& font, //系统字体名
- float fontSize, //字体的大小
- const Size& dimensions = Size::ZERO, //在屏幕上占用的区域大小,可省略
- TextHAlignment hAlignment = TextHAlignment::LEFT, //文字横向对齐方式,可省略
- TextVAlignment vAlignment = TextVAlignment::TOP) //文字纵向对齐方式,可省略
- static Label* createWithTTF(conststd::string & text,
- const std::string & fontFile, //字体文件
- float fontSize,
- const Size & dimensions = Size::ZERO, //可省略
- TextHAlignment hAlignment= TextHAlignment::LEFT, //可省略
- TextVAlignment vAlignment= TextVAlignment::TOP //可省略
- )
- static Label* createWithTTF(constTTFConfig& ttfConfig,
- const std::string& text,
- TextHAlignment alignment =TextHAlignment::LEFT,
- int maxLineWidth = 0
- )
- static Label* createWithBMFont(conststd::string& bmfontFilePath, //位图字体文件
- const std::string& text,
- const TextHAlignment& alignment =TextHAlignment::LEFT, //可省略
- int maxLineWidth = 0, //可省略
- const Point& imageOffset = Point::ZERO //可省略
- )
其中createWithSystemFont是创建系统字体标签对象,createWithTTF是创建TTF字体标签对象,createWithBMFont是创建位图字体标签对象。
下面我们通过一个实例介绍一下,它们的使用。这个实例如图下图所示。
下面我们看看HelloWorldScene.cpp中init函数如下:
- bool HelloWorld::init()
- {
- if ( !Layer::init() )
- {
- return false;
- }
- Size visibleSize = Director::getInstance()->getVisibleSize();
- Point origin = Director::getInstance()->getVisibleOrigin();
- auto closeItem = MenuItemImage::create(
- "CloseNormal.png",
- "CloseSelected.png",
- CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
- closeItem->setPosition(Point(origin.x+ visibleSize.width - closeItem->getContentSize().width/2 ,
- origin.y + closeItem->getContentSize().height/2));
- auto menu = Menu::create(closeItem, NULL);
- menu->setPosition(Point::ZERO);
- this->addChild(menu, 1);
- autolabel1 = Label::createWithSystemFont("Hello World1","Arial", 36); ①
- label1->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 100));
- this->addChild(label1,1);
- autolabel2 = Label::createWithTTF("Hello World2", "fonts/MarkerFelt.ttf", 36); ②
- label2->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 200));
- this->addChild(label2,1);
- autolabel3 = Label::createWithBMFont("fonts/BMFont.fnt", "HelloWorld3"); ③
- label3->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 300));
- this->addChild(label3,1);
- TTFConfigttfConfig("fonts/Marker Felt.ttf",
- 36,
- GlyphCollection::DYNAMIC); ④
- autolabel4 = Label::createWithTTF(ttfConfig, "Hello World4"); ⑤
- label4->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 400));
- this->addChild(label4, 1);
- ttfConfig.outlineSize= 4; ⑥
- autolabel5 = Label::createWithTTF(ttfConfig, "Hello World5"); ⑦
- label5->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 500));
- label5->enableShadow(Color4B(255,255,255,128),Size(4, -4)); ⑧
- label5->setColor(Color3B::RED); ⑨
- this->addChild(label5,1);
- return true;
- }
在上面的代码中第①是通过createWithSystemFont函数创建Label对象,第②行代码是通过createWithTTF是创建TTF字体标签对象,第③行代码是createWithBMFont是创建位图字体标签对象。
第④行代码TTFConfig ttfConfig("fonts/Marker Felt.ttf", 36, GlyphCollection::DYNAMIC)是创建一个TTFConfig结构体变量,TTFConfig结构体的定义如下:
- _ttfConfig(constchar* filePath = "", //字体文件路径
- int size = 12, //字体大小
- constGlyphCollection& glyphCollection = GlyphCollection::DYNAMIC, //字体库类型
- constchar * customGlyphCollection = nullptr, //自定义字体库
- booluseDistanceField = false, //用户是否可缩放字体
- intoutline = 0 //字体描边
- )
第⑤行代码Label::createWithTTF(ttfConfig,"Hello World4")是通过指定TTFConfig创建TTF字体标签。第⑥行代码ttfConfig.outlineSize = 4设置TTFConfig的描边字段。第⑦行代码Label::createWithTTF(ttfConfig,"Hello World5")是重新创建TTF字体标签。
第⑧行代码label5->enableShadow(Color4B(255,255,255,128),Size(4, -4))是设置标签的阴影效果。第⑨行代码label5->setColor(Color3B::RED)是设置标签的颜色。
[1] FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件。——引自于百度百科http://baike.baidu.com/view/4579855.htm
相关推荐
cocos2d-x 3.0 人物行走 . 包里有代码和 图片资源.
这是我重新弄的cocos2d-x-3.0的类图.之前别人兄台弄的,有些不全面,有些地方错误.我这个可以说是最新的了.每个类添加了中文的详细注解,同时也添加了中文的类名称翻译.这样对cocos2d-x-3.0的框架比较好上手. 有兴趣的...
Cocos2d-x3.0正式版 练练看 源码。有注释。
这是cocos2d-x 3.0 类关系图, 这个制作者是:gamecocos2dx 他做的Xmind,我导出的PNG格式,我推荐还是看Xmind,里面还有一些注释 gamecocos2dx Xmind下载地址:...
兄弟连cocos2d-x3.0 final视频教程 1.Cocos2d-x手机游戏开发C编程基础 2.Cocos2d-x手机游戏开发C++编程基础 3.Cocos2d-x3.0 final手机游戏开发核心技术 4.实例:贪吃蛇 5.实例:微信飞机大战
http://blog.csdn.net/zoyzn/article/details/27251633一文的源码。cocos2d-x 3.0导出自定义类到lua,并导出自定义类的名称空间到lua。
这是一个cocos2d-x 3.0中文开发文档.
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
cocos2d-x 3.0 骨骼动画 demo 以及注意事项
本游戏基于cocos2d-x 3.0版本,可能不适用于cocos2d-x 2.x版本,请看清楚,再参考! 使用方法:将Classes中的类全部拷贝到新建cocos项目的Classes项目中,将Resources下的所有文件拷贝到对应的文件下,运行即可!
官网中文docs文档的例子下载 创建工程的时候一定要创建一样的文件名 http://www.cocos2d-x.org/docs/tutorial/framework/native/how-to-drag-and-drop-sprites/zh
cocos2d-x 3.0 rapidjson 读取Json
Cocos2d-x3.0final 自学教程的配套代码http://blog.csdn.net/column/details/cocos2dx2014.html
Cocos2d-x3.0游戏实例《别救我》源码。 教程地址:http://blog.csdn.net/musicvs/article/details/24928929
cocos2d-x 3.0 开发文档英文版(html)
Cocos2d-x 3.0 过渡学习 尊重原创,转载来自:star特530的CSDN博客 :http://blog.csdn.net/star530?viewmode=contents
cocos2d-x 3.0-alpha0 SDK头文件和DLL文件
cocos2d-x3.0+cocostudio1.4,适合初学,冒险过关游戏
在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...
cocos2d-x 3.0正式版 所有类 的结构 图 (思想导图)用 xmind 做的 本人 有的是mac 做的 win用户下载时 有乱码 是正常的 想用这个 必须下载 xmind 软件 (mac win 都有 )目前本人 在这两个平台 都能打开