语言环境:Quick3.6.5Release(自修正版 ) + lua 5.1
学习Cocos2dx的应该都知道,在Cocos中用户输入控件总共有2种:【CCTextFieldTTF】与【CCEditBox】,使用CCTextFieldTTF的缺点是没有光标,自带的监听事件无法响应键盘的按键事件(除非自己注册),密码框输入完全看不到输入的是什么,这让我尝试着使用CCEditBox,CCEditBox的功能相对强大,但对应的使用也就复杂些,以下是我个人在使用过程中的一些心得,使用时是依靠Lua来实现的,由于扩展类的缘故,这里只写最终实现,具体踩坑还是需要自己解决,有问题可以联系我:
1. 创建方式:cc.EditBox:create(cc.size(w,h), imageNormal, imagePressed, imageDisabled)
CCScale9Sprite对象,是一种CCSprite对象的变形,它的用法和CCSprite一样,不同点是,CCScale9Sprite对象有个特性就是缩放贴图时可以尽量不失帧。
2. 重要方法解析:
setText("字符串"); //设置文本
setFontColor(color); //设置文本颜色
setPlaceHolder("文本"); //设置预设文本
getPlaceHolder(对象); //获得预设文本
setMaxLength(对象); //设置最大长度
getMaxLength(对象); //获得最大长度
setInputMode(); //设置键盘模式
setInputFlag(); //设置文本类型
setReturnType(); //设置键盘样式
---/*[setInputFlag]:设置文本输入类型
--0、密码形式
--1、敏感数据输入
--2、每个单词首字符大写,并有提示
--3、第一句首字符大写,并有提示
--4、自动大写
--*/
---/*[setInputMode]:设置键盘输入模式
--0、允许用户输入任何文本,包括换行符
--1、允许用户输入电子邮件地址。
--2、允许用户输入整数值
--3、允许用户输入电话号码。
--4、允许用户输入URL。
--5、允许用户输入实数值。
--6、允许用户输入任何文本,但换行符除外。
---*/
---/*[setReturnType]:设置键盘样式
--0、默认类型
--1、Done字样
--2、Send字样
--3、Search字样
--4、Go字样
--*/
3. 监听事件
注册监听:registerScriptEditBoxHandler() 自带、原生
监听事件:其与节点监听不同,它的函数写法为:
--参数:按键状态,当前EditBox对象
function(state,obj)
if state == 'began' then
elseif state == 'changed' then
elseif state == 'ended' then
elseif state == 'return' then
end
end
4. 【坑】
如果EditBox 的上级节点设置了隐藏属性,而此时你的EditBox 正在运行 会出现EditBox 依然可输入,但是控件已被隐藏,点击手机自带的返回键时,若 EditBox当前正在活动,EditBox 会关闭输入,其监听事件没有监听此时的返回状态,在苹果手机中尤为明显,这应该是事件的传递过程出现了问题,解决思路:移除上级节点 而不是隐藏,因为销毁事件是可以正常传递的,在EditBox 活动时关闭手机自带的按键返回。暂时只能这样做,要彻底解决这个问题还需要修改底层引擎代码,希望有引擎组的人能引起重视。
[cocos 3.1.2]
有几次设置EditBox的控件宽高无效,原来是没设置字体的原因
假设FontName没设置,则m_strFontName.length()<0,固设置字号大小将不起作用。因此得先设置字体,然后设置字号才可用。
有些控件是有默认字体的,但Editbox 控件貌似没有。
注意:若EditBox没有:setName() ,那么 Font 、FontSize 不起作用