理论基础

Text类又称ttf格式文本,可以用ttf文件或者系统自带字体,支持文字多,但是ttf文件格式体积大,渲染速度慢;

TextBMFont类又称fnt格式文本,纹理创建,根据纹理上有的文字来显示;

TextAtlas类又称艺术字文本;

代码实践

static TextBMFont * create()
创建TextBMFont对象。

static TextBMFont * create(const std::string &text, //文本的字符串形式。
const std::string &filename) //位图字体的文件路径。
通过指定的文本,以及位图字体的路径,创建TextBMFont对象。

void setFntFile (const std::string &fileName)
设置位图字体文件。

void setText (const std::string &value)
设置TextBMFont显示的字符串。

void setString (const std::string &value)
设置TextBMFont显示的字符串。

const std::string & getStringValue () const
获取TextBMFont当前显示的字符串。

const std::string & getString () const
获取TextBMFont当前显示的字符串。

ssize_t getStringLength () const
获取字符串长度。

Text类实例:

        // Create the line wrap
Text* text = Text::create("TextArea Widget can line wrap",
"AmericanTypewriter",);
text->ignoreContentAdaptWithSize(false);
text->setContentSize(Size(, ));
text->setTextHorizontalAlignment(TextHAlignment::CENTER);
text->setTouchScaleChangeEnabled(true);
text->setTouchEnabled(true);
text->addTouchEventListener([=](Ref* sender, Widget::TouchEventType type)
{
if (type == Widget::TouchEventType::ENDED)
{
if ((int)text->getContentSize().width == )
{
text->setContentSize(Size(,));
}else
{
text->setContentSize(Size(, ));
}
}
});
text->setPosition(Vec2(widgetSize.width / 2.0f,
widgetSize.height / 2.0f
- text->getContentSize().height / 8.0f));
_uiLayer->addChild(text);

TextAtlas类实例:

        // Create the text atlas
TextAtlas* textAtlas = nullptr;
if (Director::getInstance()->getWinSizeInPixels().height > .f)
{
textAtlas = TextAtlas::create("", "cocosui/labelatlas.png", , , "");
}
else
{
textAtlas = TextAtlas::create("", "cocosui/labelatlas.png", , , "");
}
textAtlas->setPosition(Vec2((widgetSize.width) / , widgetSize.height / 2.0f));
_uiLayer->addChild(textAtlas);

TextBMFont类实例:

        Size widgetSize = _widget->getContentSize();

        Text* alert = Text::create("TextBMFont","TextBMFont",30);
alert->setColor(Color3B(159, 168, 176));
alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f));
_uiLayer->addChild(alert); // Create the TextBMFont
TextBMFont* textBMFont = TextBMFont::create("BMFont", "cocosui/bitmapFontTest2.fnt");
textBMFont->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + textBMFont->getContentSize().height / 8.0f));
_uiLayer->addChild(textBMFont);

cocos代码研究(21)Widget子类Text,TextAtlas,TextBMFont学习笔记的更多相关文章

  1. cocos代码研究(12)UI之Widget学习笔记

    理论基础 Widget类,所有UI控件的基类. 这类继承自ProtectedNode和LayoutParameterProtocol. 如果你想实现自己的UI控件,你应该继承这个类. 被 VideoP ...

  2. Cocostudio学习笔记(5) Text + TextAtlas + TextBMFont

    下午一群大学生到我们公司參观学习,搞得我好紧张.于是滔滔不绝的给他们介绍了怎样开发一款游戏... 今晚研究的控件就是三个label:Text,TextAtlas,TextBMFont 我先在cocos ...

  3. cocos代码研究(21)Widget子类TextField学习笔记

    基础理论 一个接受用户输入的widget. 输入文本的渲染基于TextFieldTTF. 如果你想用系统控制行为,请使用EditBox来替代.继承自 Widget. 代码实践 //与占位符有关void ...

  4. cocos代码研究(14)Widget子类Button学习笔记

    理论基础 表示一个按钮组件. 按钮可以被按下,或者点击, 并且在按下或者点击之后,可以由用户指定一个动作来执行,继承自 Widget. 代码部分 static Button * create ()创建 ...

  5. cocos代码研究(26)Widget子类RichView学习笔记

    理论部分 一个显示多个RichElement的容器类. 我们可以使用它很容易显示带图片的文本,继承自 Widget. 代码实践 static RichText * create ()创建一个空的Ric ...

  6. cocos代码研究(24)Widget子类PageView学习笔记

    理论基础 PageView类又称Layout的管理器,可以让用户在多个Layout之间左右或者上下切换显示,继承自 Layout . 代码实践 static PageView * create ()创 ...

  7. cocos代码研究(17)Widget子类RadioButtonGroup学习笔记

    理论基础 RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互. 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被 ...

  8. cocos代码研究(16)Widget子类RadioButton学习笔记

    理论基础 RadioButton是一种特定类型的两状态按钮,它与复选框相似.它可以 和RadioButtonGroup一起使用,形成一个"组".继承自AbstractCheckBu ...

  9. cocos代码研究(15)Widget子类CheckBox学习笔记

    理论基础 复选框是一种特定类型的“两状态”按钮,可以处于“选中”和“未选中状态”.继承自AbstractCheckButton.注 AbstractCheckButton继承自Widget类. 代码部 ...

随机推荐

  1. HDU 4497 GCD and LCM (分解质因数)

    链接 :  http://acm.hdu.edu.cn/showproblem.php?pid=4497 假设G不是L的约数 就不可能找到三个数. L的全部素因子一定包括G的全部素因子 而且次方数 ...

  2. haffman哈夫曼编码的实现

    <span style="font-size:18px;">/* 1.在一棵二叉树中,我们定义从A节点到B节点所经过的分支序列为从A节点到B节点的路径: 定义从A节点到 ...

  3. GeoServer安装说明-OpenSpirit

    一.安装步骤 1.安装JDK: 2.安装Tomcat:(本测试过程使用JspStudy,需要进行端口设置,并指定Web目录,如:D:\JspStudy\tomcat\webapps) 3.拷贝geos ...

  4. /etc/rc.d/rc.local

    /etc/rc.d/rc.local 用于用户自定义开机启动程序,可以往里写开机要执行的命令或脚本,线上的配置如下: [root@localhost ~]$ cat /etc/rc.d/rc.loca ...

  5. iteritems()

    iteritems() 是列表的一个方法,用法如下: In [1]: dict1 = {"name": "Jeny", "age": 18, ...

  6. mongodb3.2系统性学习——3、update()操作

     mongodb 包含众多的原子性操作: 实例: //连接数据库 dbService = connect("localhost:27017"); //选择插入集合 db = dbS ...

  7. Android N 7 【 classes.dex】反编译失败:com.googlecode.d2j.DexException: not support version.

    Microsoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation.保留所有权利. D:\Android反编译工具[全]\2016\d ...

  8. 使用commons-email解析 eml文件

    在对eml文件进行索引的时候需要先对其进行解析,提取出其中的收件人.发件人.文件内容和附件等信息 下边是解析eml文件的一个demo(在运行之前需要先导入mail.jar 和commons-email ...

  9. Egret3D初步学习笔记三 (角色使用)

    一 Unity中编辑角色 仍然使用unity4.7.1_Egret3D_Dll.unitypackage. 里面含有一个角色. 二 查看人物的动画 选中lingtong 属性面板里有个Animator ...

  10. 【BZOJ5099】[POI2018]Pionek 几何+双指针

    [BZOJ5099][POI2018]Pionek Description 在无限大的二维平面的原点(0,0)放置着一个棋子.你有n条可用的移动指令,每条指令可以用一个二维整数向量表示.每条指令最多只 ...