CCEditBox编辑框类似于CCTextFieldTTF,但比CCTextFieldTTF更强大,比如密码输入形式、输入字体放大、复制、粘贴、插入等功能。通过#include "cocos-ext.h"导入
1、cocos-ext.h导入错误处理
当代码中使用#include "cocos-ext.h"时会提示错误,找不到CCEditBox.h头文件,因为Cocos2d-x项目默认CCEditBox.h扩展是不存在的,解决步骤如下:
1)在Cocos2d-x引擎中找到CCEditBox,复制整个CCEditBox文件到项目的路径下,然后将CCEditBox文件加入到项目中。
cocos2d-x/extensions/GUI/CCEditBox
项目根目录/libs/extensions/GUI
2)完成步骤1),项目仍无法编译成功,导入的cocos-ext.h文件中找不到以下3个头文件
#include “network/HttpRequest.h”
#include “network/HttpResponse.h”
#include “network/HttpClient.h”
出现这3个头文件找不到错误时,解决方法如下:
(1)同步骤1),将network从引擎包拷贝到项目扩展包extensions文件夹下
(2)直接注释掉cocos-ext.h中的报错3行代码即可
3)如果完成上述2步,仍旧无法编译成功,那么我们还需要从项目中将导入的CCEditBox文件夹下的CCEditBoxImplAndroid.cpp与CCEditBoxImplAndroid.h两个文件删除。
2、CCEditBox创建与使用
CCEditBox::create(const cocos2d::CCSize &zie,cocos2d::extension::CCScale9Sprite* pNormal9SpriteBg)
参数1:CCSize对象,为编辑框设定一个宽高
参数2:CCScale9Sprite对象,为编辑框设定一个背景
CCScale8Sprite类似于CCSprite,创建方法基本相同,但是CCScale9Sprite主要作用是缩放其贴图时尽可能保证不失帧
CCEditBox常用函数如下:
1)setText(const char* pText)//设置编辑框内文本信息
2)const char * getText(void)//获取编辑框文本信息
3)setFontColor(const ccColorB& color)//设置编辑框内文本字体颜色
4)setPlaceHolder(const char* pText)//设置编辑框的预设文本
5)const char* getPlaceHolder(void)//获取预设文本
6)setMaxLength(int maxLength)//设置编辑框文本输入最大长度
7)int getMaxLength()//获取编辑框可输入的最大长度
8)setInputMode(cocos2d::extension::EditBoxInputMode inputMode)//设置输入文本的虚拟键盘模式,EditBoxInputMode枚举值如下:
(1)kEditBoxInputModeAny:开启任何文本的输入键盘,包括换行
(2)kEditBoxInputModeEmailAddr:开启邮件地址输入类型键盘
(3)kEditBoxInputModeNumeric:开启数字符号输入类型键盘
(4)kEditBoxInputModePhoneNumber:开启电话号码输入类型键盘
(5)kEditBoxInputModeUrl:开启URL输入类型键盘
(6)kEditBoxInputModeDecimal:开启数字输入类型键盘,允许小数点
(7)kEditBoxInputModeSingleLine:开启任何文本的输入键盘,不包括换行
9)setInputFlag(cocos2d::extension::EditBoxInputFlag inputflag)//设置输入文本类型,EditBoxInputFlag枚举值入下:
(1)kEditBoxInputFlagPassword:密码形式输入
(2)kEditBoxInputFlagSensitive:敏感数据输入,能存储输入方案与提示
(3)kEditBoxInputFlagInitialCapsWord:每个单词首字母大写,伴有提示
(4)kEditBoxInputFlagInitialCapsSentence:第一句首字母大写,伴有提示
(5)kEditBoxInputFlagInitialCapsAllCharacters:所有字符自动大写
10)setReturnType(KeyboardReturnType returnType)//设置虚拟键盘return类型,KeyboardReturnType枚举值如下:
(1)kKeyboardReturnTypeDefault:默认使用键盘return类型
(2)kKeyboardReturnTypeDone:默认使用键盘return类型为Done字样
(3)kKeyboardReturnTypeSend:默认使用键盘return类型为Send字样
(4)kKeyboardReturnTypeSearch:默认使用键盘return类型为Search字样
(5)kKeyboardReturnTypeGo:默认使用键盘return类型为Go字样
3、CCEditBoxDelegate接口
CCEditBox与CCTextFieldTTF一样,需对其进行监控,也提供了CCEditBoxDelegate接口重写回调函数,具体步骤如下:
1)在头文件中使用CCEditBoxDelegate接口
#include "cocos-ext.h"
using namespace extension;
class HelloWorld:public cocos2d::CCLayer,public extension::CCEditBoxDelegate
{
……
}
2)重写CCEditBoxDelegate的回调函数
//开始进入编辑
virtual void editBoxEditingDidBegin(cocos2d::extension::CCEditBox* editBox);
//结束编辑
virtual void editBoxEditingDidEnd(cocos2d::extension::CCeditBox* editBox);
//编辑框文本改变
virtual void editBoxTextChanged(cocos2d::extension::CCEditBox* editBox,const std::string& text)
//当触发return后的回调函数
virtual void editBoxReturn(cocos2d::extension::CCEditBox* editBox);
3)在cpp文件中实现重写的回调函数
4)调用CCEditBox的setDelegate(CCEditBoxDelegate* pDelegate)函数绑定接口