cocos代码研究(21)Widget子类TextField学习笔记
基础理论
一个接受用户输入的widget。 输入文本的渲染基于TextFieldTTF。 如果你想用系统控制行为,请使用EditBox来替代。继承自 Widget。
代码实践
//与占位符有关
void setPlaceHolder (const std::string &value)
设置占位符。
const std::string & getPlaceHolder () const
获取占位符。
const Color4B & getPlaceHolderColor () const
请求占位符使用颜色。
void setPlaceHolderColor (const Color3B &color)
改变占位符颜色。
void setPlaceHolderColor (const Color4B &color)
改变占位符颜色。
//和文字有关
void setText (const std::string &text)
改变文本内容。
const std::string & getStringValue () const
请求获取文本内容。
void setString (const std::string &text)
改变文本内容。
const std::string & getString () const
请求获取文本内容。
const Color4B & getTextColor () const
请求文本颜色。
void setTextColor (const Color4B &textColor)
改变文本颜色。
void setFontSize (int size)
改变字体大小。
int getFontSize () const
请求获取字体大小。
void setFontName (const std::string &name)
改变字体名称。
const std::string & getFontName () const
请求获取字体名称。
virtual void didNotSelectSelf ()
取消关联输入法编辑器。
void setMaxLengthEnabled (bool enable)
开关最大长度限制。
bool isMaxLengthEnabled () const
请求是否开启了最大长度限制。
void setMaxLength (int length)
改变最大输入长度限制。
int getMaxLength () const
请求最大输入长度。
int getStringLength () const
请求输入字符串长度。
//与触摸事件有关
void setTouchSize (const Size &size)
设置触摸区域大小。 触摸大小用于hitTest。
Size getTouchSize () const
获取当前的触摸区域大小。
void setTouchAreaEnabled (bool enable)
启用或关闭触摸区域。
virtual bool hitTest (const Vec2 &pt, const Camera *camera, Vec3 *p) const override
检查一个点是否在控件的内容空间里。 这个函数是用于检测控件的触摸响应区域。
virtual bool onTouchBegan (Touch *touch, Event *unusedEvent) override
触摸事件开始时的回调函数。
//与输入模式有关
void setPasswordEnabled (bool enable)
开关密码输入模式。
bool isPasswordEnabled () const
请求密码输入模式是否开启。
void setPasswordStyleText (const char *styleText)
改变密码模式下的文本样式。
const char * getPasswordStyleText () const
请求密码模式的文本样式。
bool getInsertText () const
是否开启插入文本模式。
void setInsertText (bool insertText)
开关插入文本模式。
bool getDeleteBackward () const
是否允许回删。
void setDeleteBackward (bool deleteBackward)
开关回删模式。
//位置大小和对齐模式有关
virtual Size getAutoRenderSize ()
获取渲染时的大小。
void setTextAreaSize (const Size &size)
改变文本区域大小。
void setTextHorizontalAlignment (TextHAlignment alignment)
改变文本水平对齐类型。
TextHAlignment getTextHorizontalAlignment () const
获取水平对齐类型。
void setTextVerticalAlignment (TextVAlignment alignment)
改变文本垂直对齐类型。
TextVAlignment getTextVerticalAlignment () const
获取文本垂直对齐类型。
void addEventListenerTextField (Ref *target, SEL_TextFieldEvent selecor)
添加一个监听器,当一些预定义事件发生时进行回调操作。
void addEventListener (const ccTextFieldCallback &callback)
添加一个监听器,当一些预定义事件发生时进行回调操作。
实例:
// Create the textfield
TextField* textField = TextField::create("input words here","fonts/Marker Felt.ttf",);
textField->ignoreContentAdaptWithSize(false);
((Label*)(textField->getVirtualRenderer()))->setLineBreakWithoutSpace(true);
textField->setContentSize(Size(, ));
textField->setString("input words here");
textField->setTextHorizontalAlignment(TextHAlignment::CENTER);
textField->setTextVerticalAlignment(TextVAlignment::CENTER);
textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f));
textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_LineWrap::textFieldEvent, this));
_uiLayer->addChild(textField);
void UITextFieldTest_LineWrap::textFieldEvent(Ref *pSender, TextField::EventType type)
{
switch (type)
{
case TextField::EventType::ATTACH_WITH_IME:
{
TextField* textField = dynamic_cast<TextField*>(pSender);
Size widgetSize = _widget->getContentSize();
textField->runAction(MoveTo::create(0.225f,
Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + )));
textField->setTextHorizontalAlignment(TextHAlignment::LEFT);
textField->setTextVerticalAlignment(TextVAlignment::TOP); _displayValueLabel->setString(StringUtils::format("attach with IME"));
}
break; case TextField::EventType::DETACH_WITH_IME:
{
TextField* textField = dynamic_cast<TextField*>(pSender);
Size widgetSize = _widget->getContentSize();
textField->runAction(MoveTo::create(0.175f, Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)));
textField->setTextHorizontalAlignment(TextHAlignment::CENTER);
textField->setTextVerticalAlignment(TextVAlignment::CENTER); _displayValueLabel->setString(StringUtils::format("detach with IME"));
}
break; case TextField::EventType::INSERT_TEXT:
_displayValueLabel->setString(StringUtils::format("insert words"));
break; case TextField::EventType::DELETE_BACKWARD:
_displayValueLabel->setString(StringUtils::format("delete word"));
break; default:
break;
}
}
cocos代码研究(21)Widget子类TextField学习笔记的更多相关文章
- cocos代码研究(1)Node学习笔记
理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteB ...
- cocos代码研究(5)Action学习笔记
理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限 ...
- cocos代码研究(2)Label学习笔记
理论部分 Label类继承自Node类,中文翻译文字与字体,通常在应用开发中为模块作为提示和描述的作用,主要有3中不同的创建方式. 1.通过ttf字体包创建,通过指定本地已有的ttf格式的字体文件,创 ...
- cocos代码研究(1)sprite学习笔记
各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create(, )); addChild(sprit ...
- cocos代码研究(2)Layer学习笔记
auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Colo ...
- cocos代码研究(17)Widget子类RadioButtonGroup学习笔记
理论基础 RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互. 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被 ...
- cocos代码研究(16)Widget子类RadioButton学习笔记
理论基础 RadioButton是一种特定类型的两状态按钮,它与复选框相似.它可以 和RadioButtonGroup一起使用,形成一个"组".继承自AbstractCheckBu ...
- cocos代码研究(15)Widget子类CheckBox学习笔记
理论基础 复选框是一种特定类型的“两状态”按钮,可以处于“选中”和“未选中状态”.继承自AbstractCheckButton.注 AbstractCheckButton继承自Widget类. 代码部 ...
- cocos代码研究(14)Widget子类Button学习笔记
理论基础 表示一个按钮组件. 按钮可以被按下,或者点击, 并且在按下或者点击之后,可以由用户指定一个动作来执行,继承自 Widget. 代码部分 static Button * create ()创建 ...
随机推荐
- 从css样式表中抽取元素尺寸
jS从样式表取值的函数.IE中以currentStyle,firefox中defaultView来获取 DOM.style仅仅能读到写在html中的样式值 获取样式值的函数 function retu ...
- 数组内Merge
数组al[0...mid-1]和al[mid...num-1]两个部分都已经分别排好序.要求合并使得整个数组al有序.请给出合并merge的代码.要求空间复杂度为O(1). /* 数组a[begin, ...
- Dubbo(四) -- telnet命令
一.telnet的作用 当dubbo服务(即生产者)发布之后,我们可以通过telnet命令来来进行调试和管理,以及跟踪服务调用的次数. 注意:2.0.5以上版本服务提供端口支持telnet命令,协议一 ...
- [SQL]躺着也中枪的datetime类型
写在前面 本来这个东西,我是不想在这里总结的,今天有初学者的朋友问我了,那就不得不说说了,你肯定也踩过这样的坑,没遇到,说明你运气好,编码习惯好.那还是言归正传吧.避免你中枪,还是扫一眼这篇文章吧. ...
- (使用lua++)Lua脚本和C++交互(四)
上一篇中,你已经可以在Lua里面用C++的函数了,那么咱们再增加一点难度,比如,我有一个CTest对象,要作为一个参数,传输给func_Add()执行,怎么办?很简单,如果你对上面的代码仔细阅读,你会 ...
- 【linux】安装rar,并解压被压缩成多个rar的文件
rar 官网:http://www.rarsoft.com/download.htm 选择 RAR for linux (注意你的系统是32位还是64位) 1 安装命令: $ cd /roo ...
- mongodb学习(二)
昨天给ubuntu13.04安装ati的显卡驱动,ubuntu本来对ati的显卡支持不是很好,没办法unity启动器没有了,ccsm也没有任何作用,只得重新安装了12.10,近期也不打算升级13.04 ...
- synchronized同步方法
“非线程安全”其实会在多个线程对同一个对象中的实例变量进行并发访问的时候产生,产生的后果是脏读,也就是取到的数据是被更改过的.而“线程安全”就是以获得的实例变量的值是经过同步处理的,不会出现脏读的现象 ...
- 小程序 - API 踩坑记录(更新中...)
API 小程序API结构导览图: 声明: 请尊重博客园原创精神,转载或使用图片请注明: 博主:xing.org1^ 出处:http://www.cnblogs.com/padding1015/
- LeetCode——Lowest Common Ancestor of a Binary Search Tree
Description: Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given no ...