您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x学习笔记(11)(CCEditBox编辑框)

2014-06-08 10:42 393 查看
        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)函数绑定接口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息