我的Cocos2d-x学习笔记(二十二)CCTextFieldTTF (文字输入)、CCTextFieldDelegate(输入通知事件)

我的Cocos2d-x学习笔记(二十二)CCTextFieldTTF (文字输入)、CCTextFieldDelegate(输入通知事件),第1张

概述Cocos2d-x中提供了文本框控件CCTextFieldTTF实现文字输入功能。  CCTextFieldTTF预留了代理CCTextFieldDelegate处理通知事件。 一、CCTextFieldTTF 类部分代码如下: class CC_DLL CCTextFieldTTF : public CCLabelTTF, public CCIMEDelegate{public: /

Cocos2d-x中提供了文本框控件CCTextFIEldTTF实现文字输入功能。

CCTextFIEldTTF预留了代理CCTextFIEldDelegate处理通知事件。

一、CCTextFIEldTTF 类部分代码如下:

class CC_DLL CCTextFIEldTTF : public cclabelTTF,public CCIMEDelegate{public:    /** creates a CCTextFIEldTTF from a Fontname,alignment,dimension and Font size */    static CCTextFIEldTTF * textFIElDWithPlaceHolder(const char *placeholder,const CCSize& dimensions,CCTextAlignment alignment,const char *Fontname,float FontSize);    /** creates a cclabelTTF from a Fontname and Font size */    static CCTextFIEldTTF * textFIElDWithPlaceHolder(const char *placeholder,float FontSize);    /** initializes the CCTextFIEldTTF with a Font name,dimension and Font size */    bool initWithPlaceHolder(const char *placeholder,float FontSize);    /** initializes the CCTextFIEldTTF with a Font name and Font size */    bool initWithPlaceHolder(const char *placeholder,float FontSize);    /** Open keyboard and receive input text. */    virtual bool attachWithIME();    /**  End text input and close keyboard.*/    virtual bool detachWithIME();    // input text propertypublic:    virtual voID setString(const char *text);    virtual const char* getString(voID);    // place holder text property    // place holder text displayed when there is no text in the text fIEld.public:    virtual voID setPlaceHolder(const char * text);    virtual const char * getPlaceHolder(voID);public:    virtual voID setSecureTextEntry(bool value);    virtual bool isSecureTextEntry();};

const char* getString(voID):获取文本框内容。

voID setString(const char *text):设置文本框内容。

bool attachWithIME():激活输入法。

bool detachWithIME():取消激活输入法。

setPlaceHolder(const char * text):设置文本框内提示文字。

const char * getPlaceHolder(voID):获取文本框内提示文字。

voID setSecureTextEntry(bool value):设置安全输入模式,输入字符显示*。

bool isSecureTextEntry():判断是否是安全输入。

实例:仅使用CCTextFIEldTTF实现文字输入。

	CCTextFIEldTTF * text = CCTextFIEldTTF::textFIElDWithPlaceHolder("Please input","Arial",20);	text->setposition(ccp(200,200));	text->setPlaceHolder("Enter Your name");	text->setString("Gong");	text->attachWithIME();	addChild(text);	cclog("%s",text->getPlaceHolder());	cclog("%s",text->getString());


二、CCTextFIEldDelegate

CCTextFIEldDelegate中部分代码如下:

class CC_DLL CCTextFIEldDelegate{public:	/**  If the sender doesn't want to attach to the IME,return true;*/	virtual bool onTextFIEldAttachWithIME(CCTextFIEldTTF * sender)	{		CC_UNUSED_ParaM(sender);		return false;	}	/**If the sender doesn't want to detach from the IME,return true;*/	virtual bool onTextFIEldDetachWithIME(CCTextFIEldTTF * sender)	{		CC_UNUSED_ParaM(sender);		return false;	}	/**If the sender doesn't want to insert the text,return true;*/	virtual bool onTextFIEldInsertText(CCTextFIEldTTF * sender,const char * text,int nLen)	{		CC_UNUSED_ParaM(sender);		CC_UNUSED_ParaM(text);		CC_UNUSED_ParaM(nLen);		return false;	}	/**If the sender doesn't want to delete the delText,return true;*/	virtual bool onTextFIEldDeleteBackward(CCTextFIEldTTF * sender,const char * delText,int nLen)	{		CC_UNUSED_ParaM(sender);		CC_UNUSED_ParaM(delText);		CC_UNUSED_ParaM(nLen);		return false;	}	/**If the sender doesn't want to draw,return true.*/	virtual bool onDraw(CCTextFIEldTTF * sender)	{		CC_UNUSED_ParaM(sender);		return false;	}};

bool onTextFIEldAttachWithIME(CCTextFIEldTTF * sender):即将激活输入法,如果不想激活,返回true。

bool onTextFIEldDetachWithIME(CCTextFIEldTTF * sender):即将取消输入法,如果不想取消,返回true。

bool onTextFIEldInsertText(CCTextFIEldTTF * sender,int nLen):即将插入一段文字,如果不想插入,返回true。

bool onTextFIEldDeleteBackward(CCTextFIEldTTF * sender,int nLen):即将删除一段文字,如果不想删除,返回true。

bool onDraw(CCTextFIEldTTF * sender):如果不希望绘制这个输入法,返回true。

实例:使用CCTextFIEldDelegate实现通知相关事件

继承CCTextFIEldDelegate类后需要覆写以上五个函数,按需要覆写。

首先,继承CCTextFIEldDelegate:

class HelloWorld : public cocos2d::cclayer,public cocos2d::CCTextFIEldDelegate{public:    static cocos2d::CCScene* scene();    virtual bool init();	CREATE_FUNC(HelloWorld);	bool onTextFIEldAttachWithIME(CCTextFIEldTTF * sender);	bool onTextFIEldDetachWithIME(CCTextFIEldTTF * sender);	bool onTextFIEldInsertText(CCTextFIEldTTF * sender,int nLen);	bool onTextFIEldDeleteBackward(CCTextFIEldTTF * sender,int nLen);	bool onDraw(CCTextFIEldTTF * sender);};

然后,按需要覆写上面五个函数,使用之:
bool HelloWorld::init(){	cclayer::init();	CCTextFIEldTTF * text = CCTextFIEldTTF::textFIElDWithPlaceHolder("Please input",200));		text->setDelegate(this);//绑定接口	text->attachWithIME();	addChild(text);	return true;}bool HelloWorld::onTextFIEldAttachWithIME(CCTextFIEldTTF * sender){	return false;}bool HelloWorld::onTextFIEldDetachWithIME(CCTextFIEldTTF * sender){	//将屏幕上移,避免虚拟键盘遮挡输入框	this->setposition(0,100);	return false;}bool HelloWorld::onTextFIEldInsertText(CCTextFIEldTTF * sender,int nLen){	//将屏幕移动会原处	this->setposition(ccp(0,0));	return false;}bool HelloWorld::onTextFIEldDeleteBackward(CCTextFIEldTTF * sender,int nLen){	return false;}bool HelloWorld::onDraw(CCTextFIEldTTF * sender){	return false;}
使用CCTextFIEldDelegate后,在创建好输入框后,需要把输入框通过setDelegate绑定接口,之后便可以使用。 总结

以上是内存溢出为你收集整理的我的Cocos2d-x学习笔记(二十二)CCTextFieldTTF (文字输入)、CCTextFieldDelegate(输入通知事件)全部内容,希望文章能够帮你解决我的Cocos2d-x学习笔记(二十二)CCTextFieldTTF (文字输入)、CCTextFieldDelegate(输入通知事件)所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1060282.html

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

发表评论

登录后才能评论

评论列表(0条)

保存