基础理论

一个接受用户输入的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学习笔记的更多相关文章

  1. cocos代码研究(1)Node学习笔记

    理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteB ...

  2. cocos代码研究(5)Action学习笔记

    理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限 ...

  3. cocos代码研究(2)Label学习笔记

    理论部分 Label类继承自Node类,中文翻译文字与字体,通常在应用开发中为模块作为提示和描述的作用,主要有3中不同的创建方式. 1.通过ttf字体包创建,通过指定本地已有的ttf格式的字体文件,创 ...

  4. cocos代码研究(1)sprite学习笔记

    各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create(, )); addChild(sprit ...

  5. cocos代码研究(2)Layer学习笔记

    auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Colo ...

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

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

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

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

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

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

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

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

随机推荐

  1. Effective C++ Item 33 Avoid hiding inherited names

    class Base { private: int x; public: ; virtual void mf2(); void mf3(); ... }; class Derived: public ...

  2. 2011年冬斯坦福大学公开课 iOS应用开发教程学习笔记(第三课)

    第二课名称是:Objective-C 回顾上节课的内容: 创建了单个MVC模式的项目 显示项目的各个文件,显示或隐藏导航,Assistant Editor, Console, Object Libra ...

  3. GIS-ArcGIS 与 ThreeJs交互联动

    一.从GIS触发Three场景 MapFeatureLayer.on("click", function (evt) { graphicsLayerOfMouse.clear(); ...

  4. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器[摘抄]

    [文章作者:张宴 本文版本:v6.3 最后修改:2010.07.26 转载请注明原文链接:http://blog.s135.com/nginx_php_v6/] 前言:本文是我撰写的关于搭建“Ngin ...

  5. Sphinx以及coreseek的安装及使用 .No1

    检索结构php -> sphinx -> mysql非结构化数据又叫全文数据,非固定长度字段例如文章标题搜索这类适用sphinx 全文数据搜索:顺序扫描 : 如like查找索引扫描 : 把 ...

  6. 使用area标签实现标签的嵌套

    在项目中我们会碰到这种需求:即点击这个整个a标签跳转到一个页面,点击a里面的某个a再跳转到另一个页面.有人会说,这还不简单,直接a标签嵌套a标签,可是事实如此吗,看代码: <a href=&qu ...

  7. poj_1084 剪枝-IDA*

    题目大意 给出一个由2*S*(S+1)构成的S*S大小的火柴格.火柴可以构成1x1,2x2...SxS大小的方格.其中已经拿走了几个火柴,问最少再拿走几个火柴可以使得这些火柴无法构成任何一个方格. 题 ...

  8. c++ 函数返回研究[转]

    一,c++函数的返回分为以下几种情况 1)主函数main的返回值:这里提及一点,返回0表示程序运行成功. 2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象.用函数返回值初始化临时对 ...

  9. 【CSS系列】布局篇

    一.让设计居中 1.使用自动空白边让设计居中 <style type="text/css"> body{ text-align:center; min-width:76 ...

  10. JS复制制定内容到剪贴板怎么做?

    可以使用input也可以使用textare文本域来做(而且这个input/textarea不能够被隐藏): <a href="javascript:;" onclick=&q ...