cocos代码研究(21)Widget子类Text,TextAtlas,TextBMFont学习笔记
理论基础
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学习笔记的更多相关文章
- cocos代码研究(12)UI之Widget学习笔记
理论基础 Widget类,所有UI控件的基类. 这类继承自ProtectedNode和LayoutParameterProtocol. 如果你想实现自己的UI控件,你应该继承这个类. 被 VideoP ...
- Cocostudio学习笔记(5) Text + TextAtlas + TextBMFont
下午一群大学生到我们公司參观学习,搞得我好紧张.于是滔滔不绝的给他们介绍了怎样开发一款游戏... 今晚研究的控件就是三个label:Text,TextAtlas,TextBMFont 我先在cocos ...
- cocos代码研究(21)Widget子类TextField学习笔记
基础理论 一个接受用户输入的widget. 输入文本的渲染基于TextFieldTTF. 如果你想用系统控制行为,请使用EditBox来替代.继承自 Widget. 代码实践 //与占位符有关void ...
- cocos代码研究(14)Widget子类Button学习笔记
理论基础 表示一个按钮组件. 按钮可以被按下,或者点击, 并且在按下或者点击之后,可以由用户指定一个动作来执行,继承自 Widget. 代码部分 static Button * create ()创建 ...
- cocos代码研究(26)Widget子类RichView学习笔记
理论部分 一个显示多个RichElement的容器类. 我们可以使用它很容易显示带图片的文本,继承自 Widget. 代码实践 static RichText * create ()创建一个空的Ric ...
- cocos代码研究(24)Widget子类PageView学习笔记
理论基础 PageView类又称Layout的管理器,可以让用户在多个Layout之间左右或者上下切换显示,继承自 Layout . 代码实践 static PageView * create ()创 ...
- cocos代码研究(17)Widget子类RadioButtonGroup学习笔记
理论基础 RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互. 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被 ...
- cocos代码研究(16)Widget子类RadioButton学习笔记
理论基础 RadioButton是一种特定类型的两状态按钮,它与复选框相似.它可以 和RadioButtonGroup一起使用,形成一个"组".继承自AbstractCheckBu ...
- cocos代码研究(15)Widget子类CheckBox学习笔记
理论基础 复选框是一种特定类型的“两状态”按钮,可以处于“选中”和“未选中状态”.继承自AbstractCheckButton.注 AbstractCheckButton继承自Widget类. 代码部 ...
随机推荐
- Ext3.4--Gridpanel
Ext.onReady(function () { var sm = new Ext.grid.RowSelectionModel({singleSelect:true})//设置单选 //var s ...
- swift - UIAlertController 的用法
ios 8 以后苹果官方建议使用UIAlertController这个类,所以专门去网上找资料,了解了下用法, 1.创建一个alertController let alertController = ...
- swift - UITextView的用法
1,多行文本控件的创建 textView.frame = CGRect(x:50,y:180,width:self.view.bounds.size.width - 100,height:50) te ...
- python2.0_s12_day9之day8遗留知识(queue队列&生产者消费者模型)
4.线程 1.语法 2.join 3.线程锁之Lock\Rlock\信号量 4.将线程变为守护进程 5.Event事件 * 6.queue队列 * 7.生产者消费者模型 4.6 queue队列 que ...
- 第七篇:Logistic回归分类算法原理分析与代码实现
前言 本文将介绍机器学习分类算法中的Logistic回归分类算法并给出伪代码,Python代码实现. (说明:从本文开始,将接触到最优化算法相关的学习.旨在将这些最优化的算法用于训练出一个非线性的函数 ...
- jquery ajax返回html乱码解决
情景: index.html 使用如下代码访问另外一个html片段 1 2 3 4 5 6 7 8 9 10 11 12 13 function rewritedata(id){ var uu ...
- C/C++中的变量和静态变量
static有两种用法:一是面向过程程序设计语言中的static,用于普通变量和函数,不涉及类:二是面向对象程序设计中的static,主要涉及static在类中的作用. 面向过程设计中的static ...
- net 中的一些知识
这是一篇摘抄的文章 有一些内容对我很有帮助 .有一些内容解释很清晰 所以我拿过来了. 第一遍用了5天时间,第二遍看的时候决定自己复制一份出来于是有了这儿博客. 什么是.NET?什么是.NET Fram ...
- java父类可以强制转化成子类吗?
转自:http://blog.csdn.net/ld422586546/article/details/9707997 Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换 ...
- Python 中的map函数,filter函数,reduce函数
自学python,很多地方都需要恶补. 三个函数比较类似,都是应用于序列的内置函数.常见的序列包括list.tuple.str. 1.map函数 map函数会根据提供的函数对指定序 ...