Cocos2dx中关于CCEditBox的那些事

【CocosCreator入门】CocosCreator组件 | EditBox(文本输入)组件 Cocos Creator 是一款流行的游戏开发引擎,具有丰富的组件和工具,其中的EditBox组件是一种用于实现用户输入交互的重要组件。它可以让用户在游戏中输入文字、数字等内容,并且可以对输入内容进行格式校验和处理。 阅读详情

语言环境: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 不起作用 

 

 

Cocos2d-x中编辑框CCEditBox的使用 //设置背景图片  //ps:CCScale9Sprite对象,是一种CCSprite对象的变形,它的用法和CCSprite一样,不同点是,CCScale9Sprite对象有个特性就是缩放贴图时可以尽量不失帧。  CCScale9Sprite *pBg = CCScale9Sprite::create("extensions/orange_edit.png");    //创建编辑框  CCEdi 阅读详情

相关推荐

cocos2dx-2.X版本的EditBox问题

1、cocos2dx-2.X版本的EditBox问题 假如你写了一个UI界面,这个界面进场时有个从上到下,或者从左到右的动画, 使用CCMoveBy之类的动画实现,恰好你们界面中包含有一个EditBox输入控件, 那么这个EditBox控件在IOS上面输入时会出现问题(大致就是位置不对,输入时), 而android上面不会出现。如果没有动画,则不会有问题。 解决方法: 在动

思考的智慧,知识源于思考 1363

android下,cocos2d-x输入框隐藏问题。

第一篇博客,好激动~ 前一阵子在接入

大掌柜的专栏 1551

cocos2d-lua:输入框TextField和EditBox的使用

TextField: self.textField = self.node_root:getChildByName("TextField") self.textField:setSingleLineEnabled(false) -- true:单行输入 false:多行输入 -- self.textField:setFontName("res/font/Arial.ttf") -- self...

fightsyj的博客 6268

和屌丝一起学cocos2dx-CCEditBox

声  明        本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。 gl.paea.cn版权所有。        Hello,大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程。上节我们说到了

gl.paea.cn 3273

cocos2dx-CCEditBox

声  明        本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。 gl.paea.cn版权所有。        Hello,大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程。上节我

6054

cocos2dx CCEditBox

CCTextFieldTTF是一个简单的封装,用起来不是那么便利,在cocos2dx的extension里,对输入框有更加简单使用的类,na

尹成的技术博客 2868

cocos2dX UI控件之CCEditBox

刚刚看了看以前写的博客, 我们已经学了CCLabelTT

hushuai1992 1608

cocos2dxCCEditBox

上一篇文章是用到CCTextFieldTTF来创建的一个输入框,现在我们用CCEditBox来创建一个输入框,它是在2.0版本后加入的,好了,看例子吧:   CCEditBox *m_InputBox; 定义一个editbox;   void MyEditBoxLayer::initLayer() { CCSize size = CCDirector::sharedDirecto

专注,努力,勤奋 5967

COCOS2DX-游戏开发之二九】CCEditBox的各种问题

关于cocos2d-x 中 CCEditBox 的输入位置和IOS虚拟键盘位置不重合的bug http://www.cnblogs.com/lan0725/p/3210963.html

Teng's world 3652

cocos2dxCCEditBox输入框中英文检测

cocos2d::extension::CCEditBox*  mEditName; mEditName = SUIMgr.createCEditBox("EditAccount", this,400, 400, 250, 60); mEditName->setPosition(middleParentNode->getPosition()); mEditName->setP

u010619611的专栏 2109

cocos2dx一编辑框的使用CCEditBox

cocos2dx实现输入框,CCEditBox的简单用法,更多的设置可以查看API,看代码 #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" #include "cocos-ext.h" class HelloWorld : public cocos2d::CCLaye

Flyjun 2294

cocos2dx基础篇(13) 编辑框之二CCEditBox

【3.x】 (1)去掉“CC” (2)设置虚拟键盘的编辑类型 >EditBoxInputMode变为强枚举EditBox::EditBoxInputMode // SINGLE_LINE //开启任何文本的输入键盘(不含换行) ANY ...

diaosong8043的博客 273

cocos2dx基础篇(11)——编辑框之二CCEditBox

【唠叨】     前面我们讲了精灵贴图、标签、菜单、按钮。感觉似乎少了点什么?UI控件里是不是应该还有一个很重要的控件——编辑框。在手机网游中,启动游戏,过了开场动画后,基本上显示的第一个界面应该就是游戏的登录界面了吧。输入用户名、密码什么的,这些都是需要借助编辑框来实现输入的。点击文本,弹出虚拟键盘,输入账号密码,点击登录。     cocos2dx引擎为我们提供了两类编辑框的控件:   ...

携墨的博客 893

cocos2dx基础篇(15)——编辑框之二CCEditBox

【唠叨】 前面我们讲了精灵贴图、标签、菜单、按钮。感觉似乎少了点什么?UI控件里是不是应该还有一个很重要的控件——编辑框。在手机网游中,启动游戏,过了开场动画后,基本上显示的第一个界面应该就是游戏的登录界面了吧。输入用户名、密码什么的,这些都是需要借助编辑框来实现输入的。点击文本,弹出虚拟键盘,输入账号密码,点击登录。 cocos2dx引擎为我们提供了两类编辑框的...

weixin_33713350的博客 534

cocos2d-x CCEditBox使用陷阱

严格说来,这个不能算cocos2d-x CCEditBox的bug。但是使用时不注意,确实会被一些恶心的问题纠结掉。         CCEditBox的原理是结合系统原生控件和cocos2d-x自带的CCLabelTTF,实现输入和显示效率的完美结合。需要输入的时候显示的是系统控件,可以兼容各种输入法,平常显示时使用的是CCLabelTTF。         我在测试的时候,发现iOS版本C

langresser的专栏 7382

cocos2dx[2.x](10)--编辑框之二CCEditBox

【唠叨】 前面我们讲了精灵贴图、标签、菜单、按钮。感觉似乎少了点什么?UI控件里是不是应该还有一个很重要的控件——编辑框。在手机网游中,启动游戏,过了开场动画后,基本上显示的第一个界面应该就是游戏的登录界面了吧。输入用户名、密码什么的,这些都是需要借助编辑框来实现输入的。点击文本,弹出虚拟键盘,输入账号密码,点击登录。 cocos2dx引擎为我们提供了两类编辑框的控件: (1)CCT...

qq_34240791的博客 232

Cocos2d-x CCEditBox & CCTextFieldTTF

下面简单记录一下如何Cocos2d-x中创建输入编辑框。在引擎中为我们提供了这样两个类:CCEditBoxCCTextFieldTTF。 一、CCEditBox ①这个类文件的位置 ②这个类是继承自CCControlButton 和CCIMEDelegate。其中的CCIMEDelegate代理类中定义了四个代理方法,在使用的时候根据需要选择实现相应的委托方法,从方...

weixin_30687811的博客 136
上一篇: TinyPng——接口扩展程序(我所用的图片压缩)
下一篇: Cocos2dx中应用内部横竖屏切换
_Aby_
博客等级 码龄11年 8粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值