cocos2dx-3.3 使用编辑框(EditBox)

头文件要包含:

#include "cocos-ext.h"
USING_NS_CC_EXT;

类要继承于

class HelloWorld : public cocos2d::Layer ,public EditBoxDelegate

这里有个问题,我这样写之后会报错,提示:EditBoxDeletgate不是类名或者结构名,这个纠结了很久,后来在网上看到别人用ScoreView的时候也会出现这样的问题,有人说包含目录:$(EngineRoot)就行了,我试了一下果然成功~


在类里重载编辑框的函数

    //---------------------------------添加编辑框
    virtual void editBoxEditingDidBegin(cocos2d::extension::EditBox* editBox);
    virtual void editBoxEditingDidEnd(cocos2d::extension::EditBox* editBox);
    virtual void editBoxTextChanged(cocos2d::extension::EditBox* editBox,const std::string &text);
    virtual void editBoxReturn(cocos2d::extension::EditBox *editBox);

根据函数名我们可以知道这些函数的作用


在init函数里创建编辑框

        //---------------------------------添加账号框
	auto pEditBox_name = EditBox::create(CCSizeMake(250,50), Scale9Sprite::create("button.png"));  
	pEditBox_name->setPosition(ccp(visibleSize.width/2, visibleSize.height*3/4));  
	pEditBox_name->setFontColor(Color3B(0,0,0));//设置字体颜色  
	pEditBox_name->setPlaceHolder("Name:");//设置预置文本  
	pEditBox_name->setMaxLength(8);//设置最大长度  
	pEditBox_name->setInputMode(cocos2d::ui::EditBox::InputMode::SINGLE_LINE);//可以输入任何,但是不包括换行 
	pEditBox_name->setInputFlag(cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD);//设置输入标志位  
	pEditBox_name->setReturnType(cocos2d::ui::EditBox::KeyboardReturnType::DONE);//设置返回类型  
	pEditBox_name->setDelegate(this);//当前类继承CCEditBoxDelegate类  
	pEditBox_name->setTag(101);
	this->addChild(pEditBox_name);  

	//---------------------------------添加密码框
	auto pEditBox_password = EditBox::create(CCSizeMake(250,50), Scale9Sprite::create("button.png"));
	pEditBox_password->setPosition(ccp(visibleSize.width/2, visibleSize.height*2/4));
	pEditBox_password->setFontColor(Color3B(0,0,0));
	pEditBox_password->setPlaceHolder("Password:");
	pEditBox_password->setMaxLength(6);
	pEditBox_password->setInputMode(cocos2d::ui::EditBox::InputMode::NUMERIC);
	pEditBox_password->setInputFlag(cocos2d::ui::EditBox::InputFlag::PASSWORD);
	pEditBox_password->setReturnType(cocos2d::ui::EditBox::KeyboardReturnType::DONE);
	pEditBox_password->setDelegate(this);
	pEditBox_password->setTag(102);
	this->addChild(pEditBox_password);

然后重写编辑框的功能函数

void HelloWorld::editBoxEditingDidBegin(EditBox *editBox)  
{  
    CCLOG("start edit");  
}  
void HelloWorld::editBoxEditingDidEnd(EditBox *editBox)  
{  
    CCLOG("end edit");  
}  
void HelloWorld::editBoxReturn(EditBox *editBox)  
{  
    CCLOG("editbox return");  
}  
void HelloWorld::editBoxTextChanged(EditBox *editBox,const std::string &text)  
{  
	auto editbox = (EditBox*)editBox;
	switch(editBox->getTag())
	{
	case 101:
		CCLOG("EditBox_name changed");
		m_name=text;
		break;
	case 102:
		CCLOG("EditBox_password changed");
		m_password=text;
		break;
	default:
		break;
	}
}

好了,这样编辑框就出来了


之后说说如何做个登陆的效果

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值