***************************************转载请注明出处: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的更多相关文章

  1. 使用placeholder属性设置input文本框的提示信息

    这篇文章主要介绍了使用placeholder属性设置input文本框的提示信息,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. ios7 – WebView:IFRAME中的文本框停止接受输入

    的test.html:input.html:点按文本框内部并尝试输入.一切正常.现在点击文本框外部,然后再次点击内部,或者隐藏并显示虚拟键盘.现在打字不再起作用了.有没有人见过这个?id=133044中很难找到但已知的错误

  3. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  4. Swift UI专项训练2 本地化及自动布局

    首先我们新建一个工程,然后来做本地化,本地化就是根据用户设置的语言等等信息来显示。那么如何来设置呢,打开我们的工程,点开SupportingFiles中的Info.plist。现在我们来编辑第一个页面。在storyboard中增加一个文本框。自动布局就是我的文本框根据设备尺寸自动调整,专业术语叫约束,如何对文本框进行约束?

  5. [Swift]UIKit学习之UITextField的用法

    UIKit学习之UITextField的用法UITextField的创建:在Stroyboard中使用Ctrl+Drag拖拽法创建代码创建参考资料:

  6. Swift - 文本输入框UITextField的用法

    1,文本框的创建,有如下几个样式:UITextBorderStyle.None:无边框UITextBorderStyle.Line:直线边框UITextBorderStyle.RoundedRect:圆角矩形边框UITextBorderStyle.Bezel:边线+阴影1234lettextField=UITextField(frame:CGRectMake(10,160,200,30))//设置

  7. Swift - 点击输入框外部屏幕关闭虚拟键盘

    我们如果把文本框的ReturnKey设置成Done,然后在storyboard中将文本框的DidEndOnExit事件在代码里进行关联。如果要实现当用户点击文本框之外的舞台屏幕时也能关闭虚拟键盘。这时就要让屏幕的背景响应TouchDown事件。由于背景是UIView控件,不能直接拖拽关联Touch事件。点击右上角的Showtheidentityinspector图标,设置CustomClass的Class为UIControl就可以事件关联了。

  8. Swift - 文本输入框内容改变时响应,并获取最新内容

    同时在viewDidLoad方法内将文本框的代理设置为当前实例。然后实现textFile的shouldChangeCharactersInRange方法就能在文本框将要变化的时候执行一些代码。比如在这个方法内打印出文本框的内容,会发现每当我们改变文本框的内容时,打印出来的是上一次的内容。再输入2,文本框上是12,但打印出来却是1.要获取最新内容,则需要String的stringByReplacingCharactersInRange方法,但这个方法在Swift的String中又不支持。

  9. Swift中TextField

    //判断文本框是否为空ifIDTextField?

  10. swift – 当焦点在搜索栏上时,如何向UISearchController添加另一个文本框?

    当用户将焦点放在搜索栏上,正好位于导航栏上的“搜索栏”下方时,我正在尝试为“位置”输入添加另一个文本框.我有什么,我想要去的例子:我试过这样的东西,这不行:任何帮助将是伟大的!

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部