Cocos2dx-CCEditBox输入框中英文检测

编程之家收集整理的这篇文章主要介绍了Cocos2dx-CCEditBox输入框中英文检测编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

用法如下:

1.类继承publiccocos2d::extension::CCEditBoxDelegate,并实现CCEditBox需要实现的代理

virtualvoideditBoxEditingDidBegin(cocos2d::extension::CCEditBox* editBox);

virtualvoideditBoxEditingDidEnd(cocos2d::extension::CCEditBox* editBox);

virtualvoideditBoxTextChanged(cocos2d::extension::CCEditBox* editBox,conststd::string& text);

virtualvoideditBoxReturn(cocos2d::extension::CCEditBox* editBox);


2.定义输入框

cocos2d::extension::CCEditBox* mEditName;

mEditName =SUIMgr.createCEditBox("EditAccount",this,400,250,60);

mEditName->setPosition(middleParentNode->getPosition());

mEditName->setPlaceholderFontColor(ccc3(255,255,255));

mEditName->setText("请输入名字");

mEditName->setMaxLength(10);

this->addChild(mEditName);


3.输入回调函数实现

voideditBoxEditingDidBegin(cocos2d::extension::CCEditBox* editBox)

{

mEditName->setText("");

mStrName ="";

}

voideditBoxEditingDidEnd(cocos2d::extension::CCEditBox* editBox){

}

voideditBoxTextChanged(cocos2d::extension::CCEditBox* editBox,const std::string& text){

mStrName = text;

}

voideditBoxReturn(cocos2d::extension::CCEditBox* editBox){

}


4.检测函数(输入完成后调用,或向服务器请求时候调用,自检)

voidcheckNameNomative(conststring& text)

{

if (text =="") {

CCMessageBox("名字不能为空","account error!");

return;

}

//在苹果环境下需转为宽字符,因一个string中文长度为3,宽字符为1

std::wstring name_wstring =Utils::s2ws(text);

int chiniseSize =0;

int engnishSize =0;

for (int i =0; i != name_wstring.length(); i++) {

// 判断是否为英文字

if (((name_wstring[i] >=48) && (name_wstring[i]<=57)) || ((name_wstring[i] >=65) && (name_wstring[i] <=90)) || ((name_wstring[i] >=97) && (name_wstring[i] <=122))) {

engnishSize ++;

}

//是否为汉字

if (name_wstring[i] >127) {

chiniseSize++;

}

}


// 全部为汉字1~6

if (((chiniseSize >0) && (chiniseSize < 7)) && (engnishSize ==0)) {

CCLOG("全部汉字:%d",chiniseSize);

}

// 全部英文2~10

elseif (((engnishSize >1) && (engnishSize <11)) && (chiniseSize == 0)){

CCLOG("全部英文:%d",engnishSize);

}

// 汉字加英文1~6

elseif (((chiniseSize >0) && (chiniseSize <7)) && ((engnishSize > 0) && (engnishSize <11)) && (chiniseSize + engnishSize <7)) {

CCLOG("汉字加英文:%d + %d",chiniseSize,33)"> // 长度错误

else {

CCLOG("长度错误%d + %d",engnishSize);

}

}

// string 转宽字符函数 注:utf8是一开源文件,其中有包含检测的代码。用时需导入相关几个文件

std::wstringUtils::s2ws(conststd::string& s)

{

std::wstring resultstring;

resultstring.reserve(s.length());

utf8::utf8to16(s.begin(),s.end(),std::back_inserter(resultstring));

return resultstring;

}


最后,cceditBox未做中英文区分,需自己写检测方法,用此方法可实现检测以及达到中英文输入自量的不同。


来自:http://blog.csdn.net/u010619611/article/details/36391455

总结

以上是编程之家为你收集整理的Cocos2dx-CCEditBox输入框中英文检测全部内容,希望文章能够帮你解决Cocos2dx-CCEditBox输入框中英文检测所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的Cocos2d-x相关文章

操作步骤 1、创建cocos2d-x工程 2、新建 Scene1.cpp Scene1.h Scene1.h代码 #ifndef __SCENE1_H__#define __SCENE1_H__#in
开发环境:OS(WINDOWS 8.1 X64 企业版) cocos2d-x 2.2.1 vs2010 想给vs安装上cocos的模版,执行InstallWizardForVS2010.js,老是提示
https://www.cnblogs.com/JiaoQing/p/3906780.html 四个响应函数 1 EventListenerPhysicsContact* evContact = EventListenerPhysicsContact::create();//创建一个物理世界的碰撞事件 2 evContact->onContactBegin = [](PhysicsCo
转载于 http://www.cnblogs.com/kenkofox/p/3926797.html 熟悉js的dom事件或者flash事件的,基本都能立马明白cc.eventManager的用法。 cc.eventManager有两种注册监听器的方式,一种是原生事件,例如 cc.eventManager.addListener({ event: cc.EventListener.KEY
公共资源加载,缓存retain;防止被自动销毁 2. 数字滚动递增;用于得奖后,总金币跳动增加 3. 四舍五入显示 金币数 4.   5.  6. 加载csv 配置文件
title Map 使用box2d var sfloors = this.tiledMap.getObjectGroup(‘Special_Floor‘).getObjects(); //此处获取对象层 for (let i = 0, l = sfloors.length; i < l; i++) {   let sfloorsgNode = sfloors[i];   let compoent
摘要: 对在quick-cocos2d-x上实现的资源加密方法的补充 前篇: quick-cocos2d-x图片资源加密 让quick-cocos2d-x支持加密的plist文件   通过前篇的修改,我们已经能够在Windows平台的player,以及Android上使用加密的常见格式(png、jpg等)的图片资源了。不过,在MAC上的player,以及IOS上,加载资源时调用的是另外的代码,所以
首先将存放图片最外层文件夹命名为resources    changeBj: function(){     var url = ‘globalUI/video/gVideoPlayClick‘;     var _this = this; cc.loader.loadRes(url,cc.SpriteFrame,function(err,spriteFrame)     {         _t