Cocos2d-x 3.4 之 文本输入之 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, you don't need to release it only if you retain it again.
             */
            static EditBox* create(const Size& size,
                                   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);

运行图片:

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

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

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

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

时间: 2024-10-26 03:15:06

Cocos2d-x 3.4 之 文本输入之 EditBox的相关文章

Cocos2d-x 3.4 之 文本输入 <1>

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 本文主要讲述文本输入的东东. 这个的作用就不用多说,还是很重要的, cocos2d-x 引擎对于文本输入 有两个类可以实现, 一个是 -- CCTextFieldTTF 另一个是 -- CCEditBox 本文就主要说一下 第一个 CCTextFieldTTF,

iOS9使用提示框进行文本输入的正确实现方式

我在之前写过一篇博客<iOS9使用提示框的正确实现方式>,主要讲了如何使用UIAlertController替换UIAlertView进行提示框的实现.今天我们将会来实现一下在提示框中如何进行文本输入.该功能可以让用户进行密码确认等功能. 实现代码如下: #import "SecondViewController.h" #import "AppDelegate.h" @interface SecondViewController () @end @imp

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

收集购物信息  iOS项目 倒计时:588 步骤 /.panel-heading 项目需求 设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话.并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击. #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong)

【cocos2d-x学习笔记】文本输入、菜单、内存管理、定时器

文本输入 CCTextFiledTTF CCTextFiledTTF *textEdit = CCTextFiledTTF::textFiledWithPlaceHolder("input", "Arial", 33); textEdit->atchWithIME();      弹出软键盘 textEdit->setSecureTextEntry(true);  密码格式输入 CCEditBox CCScale9Sprite *bg = CCScale

文本输入

1.隐藏文本框的键盘,Return类型设为UIReturnKeyDone,代理方法textD\FieldShouldReturn,视图控制器可以强令键盘留在键盘上,重写disablesAutomaticKeyBoardDismissal 2.UITextInputTraints协议中的属性:autocapitalizationType文本的自动大写,autocorrectionType自动修正,spellCheckingType是否进行拼写检查,keyboardAppearance键盘风格,ke

Java Swing界面编程(17)---单行文本输入组件:JTextField

package com.beyole.util; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class test15 { public static void main(String[] args) { JFrame frame = new JFrame("Crystal");// 实例化窗

Java Swing界面编程(18)---单行文本输入组件:JTextField

以下的程序与上一例有一点区别,仔细对比不难发现其中的不同之处. package com.beyole.util; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class test17 { public static void main(String[] args) { JFrame frame = new JFrame("Crystal"); JT

Android Design新控件之TextInputLayout(文本输入布局)

谷歌在推出Android5.0的同时推出了全新的设计Material Design,谷歌为了给我们提供更加规范的MD设计风格的控件,在2015年IO大会上推出了Design支持包,Design常用的新控件包括: TextInputLayout(文本输入布局) TabLaout(选项卡布局) Snackbar FloatingActionButton(浮动按钮) NavigationView(导航视图) AppBarLayout(程序栏布局) CoordinatorLayout(协作布局) Col

iOS【textView或者textField文本输入字数限制】

[textView文本输入 字数限制] // 监听文本改变  触发时机(通过发送通知完成) -(void)textViewEditChanged:(NSNotification *)obj{ UITextView *textView = (UITextView *)obj.object; NSAttributedString *toBeString = textView.attributedText; //    NSLog(@" - -%@",[_contentView.textIn