cocos2d-js 控件——UIEditBox

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhenyu5211314/article/details/83752790

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);

猜你喜欢

转载自blog.csdn.net/zhenyu5211314/article/details/83752790