cocos代码研究(13)Widget子类EditBox学习笔记

理论基础

一个用来输入文本的类,继承自 Widget , 以及 IMEDelegate。

代码部分

Public枚举类型

enum KeyboardReturnType
键盘的返回键类型。

enum InputMode {
ANY, EMAIL_ADDRESS, NUMERIC, PHONE_NUMBER,
URL, DECIMAL, SINGLE_LINE
}

 

枚举值
ANY 

用户可以输入任何文本,包括换行符。

EMAIL_ADDRESS 

允许用户输入一个电子邮件地址。

NUMERIC 

允许用户输入一个整数值。

PHONE_NUMBER 

允许用户输入一个电话号码。

URL 

允许用户输入一个URL。

DECIMAL 

允许用户输入一个实数 通过允许一个小数点扩展了kEditBoxInputModeNumeric模式

SINGLE_LINE 

除了换行符以外,用户可以输入任何文本,


EditBox::InputMode定义了可以输入的文本类型。

enum InputFlag {
PASSWORD, SENSITIVE, INITIAL_CAPS_WORD, INITIAL_CAPS_SENTENCE,
INTIAL_CAPS_ALL_CHARACTERS
}

枚举值
PASSWORD 

表明输入的文本是保密的数据,任何时候都应该隐藏起来 它隐含了EDIT_BOX_INPUT_FLAG_SENSITIVE

SENSITIVE 

表明输入的文本是敏感数据, 它禁止存储到字典或表里面,也不能用来自动补全和提示用户输入。 一个信用卡号码就是一个敏感数据的例子。

INITIAL_CAPS_WORD 

这个标志的作用是设置一个提示,在文本编辑的时候,是否把每一个单词的首字母大写。

INITIAL_CAPS_SENTENCE 

这个标志的作用是设置一个提示,在文本编辑,是否每个句子的首字母大写。

INTIAL_CAPS_ALL_CHARACTERS 

自动把输入的所有字符大写。


EditBox::InputFlag定义如何显示和格式化输入文本。

创建一个固定大小的编辑框
static EditBox * create (const Size &size, //编辑框的大小。
Scale9Sprite *normalSprite,
Scale9Sprite *pressedSprite=nullptr,
Scale9Sprite *disabledSprite=nullptr)

创建一个固定大小的编辑框。
static EditBox * create (const Size &size, //编辑框的大小。
const std::string &normal9SpriteBg, //编辑框的背景图片名字。
TextureResType texType=TextureResType::LOCAL)

void setInputMode (InputMode inputMode)
设置编辑框的输入模式。

void setInputFlag (InputFlag inputFlag)
设置编辑框的输入标识,这个标识是EditBox::InputFlag类型

void setMaxLength (int maxLength)
设置编辑框允许输入的最大长度。 设置这个值默认允许多行输入 可以在Android,iOS和Windows Phone平台使用

int getMaxLength ()
获取编辑框的最大输入长度。

//与文字有关
void setText (const char *pText)
设置编辑框中输入的文本。

const char *getText (void)
获取编辑框中输入的文本。

void setFont (const char *pFontName, int fontSize)
设置编辑框的字体。仅支持系统字体

void setFontName (const char *pFontName)
设置字体的名字。仅支持系统字体

void setFontSize (int fontSize)
设置字体大小。

void setFontColor (const Color3B &color)
设置编辑框的文本字体颜色。

//与占位符有关
void setPlaceholderFont (const char *pFontName, int fontSize)
设置占位符的字体。仅支持系统字体

void setPlaceholderFontName (const char *pFontName)
设置占位符的字体名称。仅支持系统字体

void setPlaceholderFontSize (int fontSize)
设置占位符的字体大小。

void setPlaceholderFontColor (const Color3B &color)
当编辑框为空的时候,设置占位符文本字体颜色,

void setPlaceholderFontColor (const Color4B &color)
当编辑框为空的时候,设置占位符文本字体颜色

void setPlaceHolder (const char *pText)
当编辑框为空的时候,设置编辑框中的占位符文本

const char *getPlaceHolder (void)
当编辑框为空的时候,获取编辑框中的占位符文本

void setDelegate (EditBoxDelegate *delegate)
设置编辑框控件的代理类

void registerScriptEditBoxHandler (int handler)
注册一个脚本函数,当编辑框发出事件时,这个脚本函数会被调用

void unregisterScriptEditBoxHandler (void)
注销已注册的编辑框事件监听脚本函数

int getScriptEditBoxHandler (void)
获取一个脚本函数句柄

void setReturnType (EditBox::KeyboardReturnType returnType)
设置编辑框的键盘的Return类型,这个类型的取值为EditBox::KeyboardReturnType常量之一

virtual voidonEnter (void) override
每次当Node进入“stage”时才调用事件回调。 如果Node进入“stage”状态时伴随着一个转换(transition),那么事件将会在这个转换开始的时候被调用。 在onEnter过程中,你不能够接入“sister/brother”兄妹节点。 如果你重写了onEnter方法,你应该调用它的父类,e.g., Node::onEnter().

virtual voidonExit (void) override
每次当Node离开“stage”时才调用事件回调。 如果Node离开“stage”状态时伴随着一个转换(transition), 那么事件将会在这个转换结束的时候被调用。 在onEnter过程中中你不能够接入一个兄妹节点。 如果你重写onExit, 你应该调用它的父类, e.g., Node::onExit().

实例:

        // top
        std::string pNormalSprite = "extensions/green_edit.png";
        _editName = ui::EditBox::create(editBoxSize, ui::Scale9Sprite::create(pNormalSprite));
        _editName->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height*3/4));
        _editName->setFontColor(Color3B::RED);
        _editName->setPlaceHolder("Name:");
        _editName->setPlaceholderFontColor(Color3B::WHITE);
        _editName->setMaxLength(8);
       _editName->setFontSize(editBoxSize.height/2);
        _editName->setText("v???");
        _editName->setReturnType(ui::EditBox::KeyboardReturnType::DONE);
        _editName->setDelegate(this);
        addChild(_editName);
        
        // middle
        _editPassword = ui::EditBox::create(editBoxSize, "extensions/orange_edit.png");
        _editPassword->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/2));
        _editPassword->setFontColor(Color3B::GREEN);
        _editPassword->setPlaceHolder("Password:");
        _editPassword->setMaxLength(6);
        _editPassword->setInputFlag(ui::EditBox::InputFlag::PASSWORD);
        _editPassword->setInputMode(ui::EditBox::InputMode::SINGLE_LINE);
       _editPassword->setFontSize(editBoxSize.height/2);
        _editPassword->setDelegate(this);
        addChild(_editPassword);
        
        // bottom
        auto bottomButtonSize = Size(editBoxSize.width, editBoxSize.height + 10);
        _editEmail = ui::EditBox::create(bottomButtonSize, "extensions/yellow_edit.png");
        _editEmail->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/4));
        _editEmail->setPlaceHolder("Email:");
        _editEmail->setInputMode(ui::EditBox::InputMode::EMAIL_ADDRESS);
        _editEmail->setDelegate(this);
        addChild(_editEmail);

 

转载于:https://www.cnblogs.com/damowang/p/4859155.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值