您的位置:首页 >> Cocos2d-x >> 和屌丝一起学cocos2dx-CCEditBox

和屌丝一起学cocos2dx-CCEditBox

[ 孤狼 | 2015-02-09 17:11:09 | Cocos2d-x | 3082°C | 0条评论 ]
声 明

本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。
gl.paea.cn版权所有。


       Hello,大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程。上节我们说到了CCMenu菜单,不知道大家练习的怎么样了呢?哈哈,一定是没好好练习吧。可是我可不能等你们哦,所以加快进度吧。好了,这节我们就开始学习一个新控件-CCEditBox。一起来学习吧。


       CCEditBox看起来和CCTextFieldTTF十分的相似,因为他们两个都是用来输入文字的输入框,但是有相同就有所不同,CCEditBox的功能要比CCTextFieldTTF的功能强大的多,但是带来的是,使用起来也要麻烦一点啦。好了下面我们就开始来攻克它吧。


       首先还是一样,新建一个项目,我们命名为Cceditboxdemo吧。


【一】:引用cocos-ext.h


       这里因为这些东西都是2.0版本以后的心玩意,所以我们需要引入他们,他们在一个叫cocos-ext.h的文件里定义,我们去引用一下。

       我们在ccp文件上输入#include "cocos-ext.h",可是你会发现系统提示,找不到,我们不是已经把cocos2dx的安装目录引入了吗?哈哈,这里是因为这个类库并不是直接在cocos2dx的引入库的,我们要去搬运一下。

       先找到扩展类库的位置。例如:C:\cocos2dx\extensions\这时候我们就看到了cocos-ext.h文件了,可是怎么引用他呢?有些教程说的是直接吧下面的一些文件拷贝到项目目录里,然后再添加进项目就可以了,我是你们知道的,我比较懒,这样每次用到都去拷贝肯定不是我的风格,怎么办呢?突然想到一件事,我们一开始的时候不也是遇到要拷贝文件才能调用的情况吗?我们那时候是修改了模板文件解决了,这次行不行的通呢?我们找到那个配置的js  C:\cocos2dx\template\msvc\CCAppWiz.win32\Scripts\1033\default.js 打开它,我们可以看到这里都是我们之前修改过的路径,那么我们看看加上我们要的这个外部类路劲能不能引用进去(这里我放在第一位,因为我试了几次放在下面的都没成功,不知道什么原因)。



       然后我新建了个项目,直接去搜一下cocos-ext.h



       哈哈,找到了,看来成功了,好了,我们继续。(注:这里我没有使用原来的项目。修改配置文件后我重新建立的项目运行,原有项目因为可能已经创建好了所以引用目录都写进程序了,不会正常引入cocos-ext.h文件)


【二】:CCEditBox


方法:

CCEditBox::create("CCSize对象","CCScale9Sprite对象");

CCScale9Sprite对象,是一种CCSprite对象的变形,它的用法和CCSprite一样,不同点是,CCScale9Sprite对象有个特性就是缩放贴图时可以尽量不失帧。

函数解析:

setText("字符串");              //设置文本

setFontColor(color);          //设置文本颜色

setPlaceHolder("文本");   //设置预设文本

getPlaceHolder(对象);      //获得预设文本

setMaxLength(对象);         //设置最大长度

getMaxLength(对象);        //获得最大长度

setInputMode();                  //设置键盘模式

setInputFlag();                    //设置文本类型

setReturnType();                //设置键盘return类型


1.setInputMode

这里cocos2dx给我们提供了很多键盘的模式,我们来一一了解下。

kEditBoxInputModeAny                    //文本键盘(含换行)

kEditBoxInputModeEmailAddr        //邮件类键盘

kEditBoxInputModeNumeric            //数字符号键盘

kEditBoxInputModePhoneNumber //电话号码键盘

kEditBoxInputModeUrl                     //URL键盘

kEditBoxInputModeDecimal            //输入键盘(含小数点)

kEditBoxInputModeSingleLine        //文本键盘(不含换行)


2.setInputFlag

这里cocos2dx给我们提供了5种文本类型。

kEditBoxInputFlagPassword                          //密码形式

kEditBoxInputFlagSensitive                            //敏感数据输入

kEditBoxInputFlagInitialCapsWord                //每个单词首字符大写,并有提示

kEditBoxInputFlagInitialCapsSentence         //第一句首字符大写,并有提示

kEditBoxInputFlagInitialCapsAllCharacters  //自动大写


3.setReturnType

这里cocos2dx给我们提供了5种键盘返回类型。

kKeyboardReturnTypeDefault        //默认类型

kKeyboardReturnTypeDone           //Done字样

kKeyboardReturnTypeSend           //Send字样

kKeyboardReturnTypeSearch        //Search字样

kKeyboardReturnTypeGo               //Go字样


【三】:示例


       好了,光说不练可不行,我们来试一下做个登录界面吧。


1.和CCtextFieldTTF一样,我们需要一个监控事件来操作。让我们的类继承CCEditBoxDelegate接口。

我们修改Cceditboxdemo.h文件。先要导入cocos-ext.h,然后引用命名空间using namespace cocos2d::extension;


//开始编辑

virtual void editBoxEditingDidBegin(cocos2d::extension::CCEditBox * myeditbox);

//结束编辑

virtual void editBoxEditingDidEnd(cocos2d::extension::CCEditBox * myeditbox);

//编辑框文字改变

virtual void editBoxTextChanged(cocos2d::extension::CCEditBox * myeditbox,const std::string&text);

//触发return后的回调函数

virtual void editBoxReturn(cocos2d::extension::CCEditBox * myeditbox);



2.然后我们去cpp文件修改修改


CCScale9Sprite * scale9one = CCScale9Sprite::create("boxbg.png");

CCEditBox * myeditbox1=CCEditBox::create(CCSizeMake(200,40),scale9one);

myeditbox1->setInputMode(kEditBoxInputModeSingleLine);

myeditbox1->setPosition(ccp(mysize.width/2,mysize.height-100));

this->addChild(myeditbox1);

myeditbox1->setDelegate(this);

CCEditBox * myeditbox2=CCEditBox::create(CCSizeMake(200,40),scale9one);

myeditbox2->setInputMode(kEditBoxInputModeSingleLine);

myeditbox2->setInputFlag(kEditBoxInputFlagPassword);

myeditbox2->setPosition(ccp(mysize.width/2,mysize.height-200));

this->addChild(myeditbox2);

myeditbox2->setDelegate(this);




3.我们运行可是提示我们“error LNK2019: 无法解析的外部符号 "public: static class cocos2d::extension::CCScale9Sprite”fuck,搞笑呢吧。

       最后在 eVīLī?ō 的帮助下,解决了这个问题,原来我们没有引入库文件libExtensions.lib。

       右键查看项目属性,找到“配置属性”-“连接器”-“输入”在这里我们加上libExtensions.lib这一项。然后保存重新生成。



4.运行会提示错误,因为包含的一些我们没用到,直接忽略最后就可以成功了。




5.如果以后不想手动添加libExtensions.lib的话,还去修改模板文件,在 var strAddDepends = 'libcocos2d.lib opengl32.lib glew32.lib';这里把libExtensions.lib加上即可。



本节DEMO下载


转载请注明出处:http://gl.paea.cn/n.php?n=12
 
如您看得高兴,欢迎随意投喂,让我们坚持创作!
赞赏一个鸡腿
还没有人留下遗迹
综合 · 搜索