Cocos2d-x 3.4 之 文本输入之 EditBox

Cocos2d-x 3.4 之 文本输入之 EditBox,第1张

概述***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 上一篇,说了 文本输入的 CCTextFieldTTF, 这次继续来弄文本输入,EditBox 做完CCTextFieldTTF以后,马上就搞这个EditBox了

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************



上一篇,说了 文本输入的 CCTextFIEldTTF,

这次继续来弄文本输入,EditBox


做完CCTextFIEldTTF以后,马上就搞这个EditBox了,

但是,改动有些多,而且好多BUG啊,网上资料也不多,整的我焦头烂额。。。

先发一些基础的,具体其他功能,等它完善一些吧。。




一、简介

同CCTextFIEldTTF一样,看一下 EditBox 的类继承图,

这里说一下,网上的查到的都是下面这样的,到cocos2d-x 3.0 API为止(应该是中文最高版本),也是这样的


就是说 EditBox类是由 Controlbutton类和IMEDelegate类继承而来,

在讨论 CCTextFIEldTTF时就有说过,它就像 动态的Label,

那这个,就是动态的button了。

————But

在3.4 API中,它的类继承图改变了:


IMEDelegate没变,这是输入法的代理类,但是另一个变成了 Widget 类,这个类查一查就可以发现,它:


就列在这里,具体东东,自己琢磨吧,

我觉得,就是从2.x到3.x的改变,

要重新整理这个类结构了,所以我在测试这个的时候好痛苦的啊。。




二、 *** 作使用

虽然,BUG有,但是它基本功能还是可以用的

1.头文件与命名空间:

#include "cocos-ext.h"USING_NS_CC_EXT;

2.创建:

>

             * create a edit Box with size.             * @return An autorelease pointer of EditBox,you don't need to release it only if you retain it again.             */            static EditBox* create(const Size& size,Scale9Sprite* normalSprite,Scale9Sprite* pressedSprite = nullptr,Scale9Sprite* DisabledSprite = nullptr);

它的各参数:

——size 文本框的大小

——normalSprite 文本框正常的背景

——pressedSprite 文本框被点击时的背景

——DisabledSprite 文本框不可用时的背景

>

             * create a edit Box with size.             * @return An autorelease pointer of EditBox,const std::string& pnormal9SpriteBg,TextureResType texType = TextureResType::LOCAL);

它的各参数:

——size 文本框的大小

——pnormal9SpriteBg 背景图片位置

——texType 不知道,也没查到...希望各位能帮我解答一下


3.默认文本

设置默认文本,不像CCTextFIEldTTF,create时必须创建默认文本,这个如果需要需额外自己写set

/*     默认字体相关     */// 默认文本setPlaceHolder("name:");// 字体setPlaceholderFontname("Arial");// 颜色setPlaceholderFontcolor(color3B::BLUE);// 大小setPlaceholderFontSize(48);

顺便文本的也一样
setFontname("Marker Felt");setFontcolor(color3B::RED);setFontSize(24);


4.其他一些 *** 作

> 最大输入限制

setMaxLength(n);

这个我没有测试过去,在官方API上说:


就是说,可以设置文本框最大文本长度,如果设置这个就等同于开启了多行输入,

但是我这里无法限制长度,而且多行输入也没被打开。。。


>是否可见

setVisible(true/false);


>设置输入文本的显示模式



>设置可输入文本类型



>设置返回时的类型


DEFAulT —— 默认类型

DONE —— "确定"

SEND —— "发送"

SEARCH —— "搜索"

GO —— "连接"


5. 对于它的委托类

如果创建一个类,想用 CREATE_FUNC

必须要设置它委托类的一些虚函数才可以

四大金刚

//开始编辑时virtual voID editBoxEditingDIDBegin(EditBox* editBox);//结束编辑时virtual voID editBoxEditingDIDEnd(EditBox* editBox);//编辑框文字改变时virtual voID editBoxTextChanged(EditBox* editBox,const std::string& text);//触发返回后virtual voID editBoxReturn(EditBox* editBox);


还有其他的一些东西,查一查API吧~




三、Do it

还是惯例,实践环节,创建一个 editBox ,设置它的默认字体 与 文本的颜色等

        // 屏幕大小	Size visibleSize = Director::getInstance()->getVisibleSize();  	// 编辑框大小	Size BoxSize = CCSizeMake(400,200);	Size BoxSize2 = CCSizeMake(400,100);	EditBox* editBox = EditBox::create(BoxSize,"green.png");	editBox->setposition(Vec2(visibleSize.wIDth/2,visibleSize.height/2));		// 默认字体相关	editBox->setPlaceHolder("name:");	editBox->setPlaceholderFontname("Arial");	editBox->setPlaceholderFontcolor(color3B::BLUE);	editBox->setPlaceholderFontSize(32);		// 编辑框文本相关	editBox->setFontname("Arial");	editBox->setFontcolor(color3B::RED);	editBox->setFontSize(24);	this->addChild(editBox);	EditBox* editBox2 = EditBox::create(BoxSize2,"yellow.jpg");	editBox2->setposition(Vec2(visibleSize.wIDth/2,visibleSize.height/4));		editBox2->setPlaceHolder("Password:");	editBox2->setFontname("Arial");	editBox2->setPlaceholderFontSize(24);	editBox2->setFontSize(48);	editBox2->setinputFlag(EditBox::inputFlag::PASSWORD);	this->addChild(editBox2);

运行图片:


可以发现,我们设置的默认字体大小功能没有起作用。。。

好痛苦,做这个各种郁闷,资料少,麻烦多。。。

如果本篇文章有任何错误,敬请指正



********************************************

总结

以上是内存溢出为你收集整理的Cocos2d-x 3.4 之 文本输入之 EditBox全部内容,希望文章能够帮你解决Cocos2d-x 3.4 之 文本输入之 EditBox所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1055479.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存