UIEditBox公有属性、方法
UIEditBoxDlegate
/**
* 编辑框获得焦点时,在弹出键盘后调用此方法
* @param editBox UIEditBox
*/
virtual void editBoxEditingDidBegin(EditBox* editBox) {};
/**
* 编辑框失去焦点时,在隐藏键盘后调用此方法
* @param editBox UIEditBox
*/
virtual void editBoxEditingDidEnd(EditBox* editBox) {};
/**
* 当编辑框文本被改变时,这个方法被调用。
* @param editBox UIEditBox
* @param text 新的编辑框文本
*/
virtual void editBoxTextChanged(EditBox* editBox, const std::string& text) {};
/**
* 当按下返回按钮或触摸键盘的外部区域时调用此方法。
* @param editBox UIEditBox
*/
virtual void editBoxReturn(EditBox* editBox) = 0;
};
UIEditBox
/**
* 键盘返回键的类型
*/
enum class KeyboardReturnType
{
DEFAULT,
DONE,
SEND,
SEARCH,
GO
};
/**
* 用户被允许输入的文本类型
*/
enum class InputMode
{
ANY, // 用户可以输入任何文本,包括换行符
EMAIL_ADDRESS, // 用户可以输入电子邮件地址。
NUMERIC, // 用户可以输入一个整数值。
PHONE_NUMBER, // 用户被允许输入电话号码。
URL, // 用户被允许输入一个URL。
DECIMAL, // 用户被允许输入实数值.NUMERIC的扩展,允许输入小数点
SINGLE_LINE, // 用户可以输入任何文本,除了换行符。
};
/**
* 定义如何显示/输入文本格式化
*/
enum class InputFlag
{
PASSWORD, // 表示输入的文本是应该保密的数据
SENSITIVE, // 表示输入的文本是敏感数据(如信用卡)
INITIAL_CAPS_WORD, // 这个标志暗示了在文本编辑过程中,每个单词的首字母应该大写。
INITIAL_CAPS_SENTENCE, // 这个标志暗示了在文本编辑过程中,每个句子的首字母应该大写。
INITIAL_CAPS_ALL_CHARACTERS, // 自动大写所有字符。
};
/**
* 创建EditBox实例
* @param size 尺寸
* @param normalSprite 默认状态背景图
* @param pressedSprite 点击状态背景图
* @param disabledSprite 禁用状态背景图
* @return EditBox的自动释放指针,只有当你再次保留时,你才需要释放它。
*/
static EditBox* create(const Size& size,
Scale9Sprite* normalSprite,
Scale9Sprite* pressedSprite = nullptr,
Scale9Sprite* disabledSprite = nullptr);
/**
* 创建EditBox实例
* @param size 尺寸
* @param normal9SpriteBg 默认状态背景图
* @return EditBox的自动释放指针,只有当你再次保留时,你才需要释放它。
*/
static EditBox* create(const Size& size,
const std::string& normal9SpriteBg,
TextureResType texType = TextureResType::LOCAL);
/**
* 初始化指定大小的编辑框,这个方法应该在构造函数之后被调用(它会初始化视图的坐标,所以需要重新设置坐标位置,并且会自动换行)
* @param size 输入框大小
* @param normal9SpriteBg 默认状态输入框背景
* @param texType 图片类型(Local、Plist)
* @return Whether initialization is successfully or not.
*/
bool initWithSizeAndBackgroundSprite(const Size& size,
const std::string& normal9SpriteBg,
TextureResType texType = TextureResType::LOCAL);
/**
* 初始化指定大小的编辑框,这个方法应该在构造函数之后被调用(它会初始化视图的坐标,所以需要重新设置坐标位置)
* @param size 输入框大小
* @param normal9SpriteBg 默认状态背景图像
* @return 初始化是否成功。
*/
bool initWithSizeAndBackgroundSprite(const Size& size, Scale9Sprite* normal9SpriteBg);
/**
* 设置代理对象
*/
void setDelegate(EditBoxDelegate* delegate);
/**
* 获取代理对象
*/
EditBoxDelegate* getDelegate();
/**
* 注册一个将被EditBox事件调用的脚本函数
* 该处理程序将在onExit()调用后自动移除。
* 代码示例:
* -- lua示例:
* local function editboxEventHandler(eventType)
* if eventType == "began" then
* -- 在键盘显示后编辑框获得焦点时触发
* elseif eventType == "ended" then
* -- 当键盘被隐藏后编辑框失去焦点时触发。
* elseif eventType == "changed" then
* -- 当编辑框文本被改变时触发。
* elseif eventType == "return" then
* -- 当按下返回按钮或触摸键盘的外部区域时触发。
* end
* end
*
* local editbox = EditBox:create(Size(...), Scale9Sprite:create(...))
* editbox = registerScriptEditBoxHandler(editboxEventHandler)
* @endcode
*
* @param handler A number that indicates a lua function.
* @js NA
* @lua NA
*/
void registerScriptEditBoxHandler(int handler);
/**
* 注销将被EditBox事件调用的脚本函数
* @js NA
* @lua NA
*/
void unregisterScriptEditBoxHandler(void);
/**
* 得到一个脚本函数
*/
int getScriptEditBoxHandler(void){ return _scriptEditBoxHandler ;}
/**
* 设置在编辑框中输入的文字
* @param pText 给定的文字
*/
void setText(const char* pText);
/**
* 设置在编辑框中输入的文字
* @return 给定的文字
*/
const char* getText(void);
/**
* 设置字体,只允许系统字体
* @param pFontName 字体名称
* @param fontSize 字体大小
*/
void setFont(const char* pFontName, int fontSize);
/**
* 设置字体名称,只允许系统字体
* @param pFontName 字体名称
*/
void setFontName(const char* pFontName);
/**
* 设置字体大小
* @param fontSize 字体大小
*/
void setFontSize(int fontSize);
/**
* 设置文本的字体颜色
* @param color 字体颜色
*/
void setFontColor(const Color3B& color);
void setFontColor(const Color4B& color);
/**
* 设置占位符的字体,只允许系统字体
* @param pFontName 系统字体
* @param fontSize 字体大小
*/
void setPlaceholderFont(const char* pFontName, int fontSize);
/**
* 设置占位符的字体名称,只允许系统字体
* @param pFontName 系统字体
*/
void setPlaceholderFontName(const char* pFontName);
/**
* 设置占位符的字体大小
* @param fontSize 字体大小
*/
void setPlaceholderFontSize(int fontSize);
/**
* 编辑框为空时,设置占位符文本的字体颜色
* @param color 占位符颜色
*/
void setPlaceholderFontColor(const Color3B& color);
void setPlaceholderFontColor(const Color4B& color);
/**
* 设置占位符
* @param pText 占位符文本
*/
void setPlaceHolder(const char* pText);
/**
* 获取占位符
* @return 占位符
*/
const char* getPlaceHolder(void);
/**
* 设置编辑框的输入模式
* @param inputMode 输入模式
*/
void setInputMode(InputMode inputMode);
/**
* 设置编辑框的最大输入长度
* 设置此值默认启用多行输入模式。
* 在Android,iOS和Windows Phone上可用
* @param maxLength 最大长度
*/
void setMaxLength(int maxLength);
/**
* 获取编辑框的最大输入长度
* @return Maximum 最大长度
*/
int getMaxLength();
/**
* 设置编辑框的内容类型(密码、敏感词等)
* @param inputFlag 内容类型
*/
void setInputFlag(InputFlag inputFlag);
/**
* 设置键盘返回键的样式
* @param returnType
*/
void setReturnType(EditBox::KeyboardReturnType returnType);
UIEditBox 示例
// 加载Plist文件
cc.spriteFrameCache.addSpriteFrames(game.platform.path + "Setup/setting.plist");
this.inputbox01_img = "inputbox01.png";
this.inputbox02_img = "inputbox02.png";
var inputView = new cc.EditBox(cc.size(200, 40), new cc.Scale9Sprite(this.inputbox01_img), ccui.Widget.PLIST_TEXTURE);
inputView.setPosition(640, 360);
inputView.setName("");
inputView.setDelegate(this);
inputView.setMaxLength(100);
inputView.setInputFlag(cc.EDITBOX_INPUT_FLAG_SENSITIVE); //修改为不使用密文
inputView.setInputMode(cc.EDITBOX_INPUT_MODE_SINGLELINE); //设置不可换行,可以输入任意文字
inputView.initWithSizeAndBackgroundSprite(cc.size(600, 40), this.inputbox01_img, ccui.Widget.PLIST_TEXTURE);
inputView.setPosition(640, 360);
inputView.setPlaceholderFontColor(cc.hexToColor("#744b37"));
inputView.setFontColor(cc.hexToColor("#744b37"));
inputView.setPlaceholderFontSize(34);
inputView.setFontSize(34);
inputView.setPlaceHolder("请输入文字");
this.addChild(inputView);