Cocos2d-x中CCEditBox文本輸出框的應用實例。本站提示廣大學習愛好者:(Cocos2d-x中CCEditBox文本輸出框的應用實例)文章只能為提供參考,不一定能成為您想要的結果。以下是Cocos2d-x中CCEditBox文本輸出框的應用實例正文
文本輸出框這個器械信任年夜家豈論做甚麼游戲總會用到吧,明天我們就來看看這個器械若何應用。文本輸出框異樣屬於擴大庫中的內容,所以你曉得怎樣做了吧。當用戶要在文本框中輸出內容,這一系列的進程我們須要一些函數的挪用來取得我們想要的器械,包括這些函數的類須要完成CCEditBoxDelegate這個接口,上面我們來看看詳細若何應用吧。
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
//須要包括擴大庫
#include "cocos-ext.h"
using namespace cocos2d;
using namespace cocos2d::extension;
//應用CCEditBox必需繼續自CCEditBoxDelegate接口,完成其的一些函數
class HelloWorld : public cocos2d::CCLayer,public CCEditBoxDelegate
{
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::CCScene* scene();
// implement the "static node()" method manually
CREATE_FUNC(HelloWorld);
//要完成的函數以下
//當鍵盤彈出編纂框取得核心時挪用
virtual void editBoxEditingDidBegin(CCEditBox* editBox);
//當鍵盤消逝編纂框掉去核心時挪用
virtual void editBoxEditingDidEnd(CCEditBox* editBox);
//當編纂框文本轉變時挪用
virtual void editBoxTextChanged(CCEditBox* editBox, const std::string& text);
//當前往鍵按下時或許點擊了鍵盤之外的區域時挪用
virtual void editBoxReturn(CCEditBox* editBox);
private:
CCSize m_size;
CCEditBox * editBox;
};
#endif // __HELLOWORLD_SCENE_H__
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
this->m_size = CCDirector::sharedDirector()->getVisibleSize();
//第一個參數是文本框的年夜小,第二個是文本框在正常情形下的配景圖片,第三個參數是按下時刻的配景圖片
//第四個參數是弗成用的時刻的配景圖片,後三個參數可以省略
editBox = CCEditBox::create(CCSize(300,40),
CCScale9Sprite::create("9.9.png"),
CCScale9Sprite::create("8.9.png"));
editBox->setPosition(ccp(m_size.width/2,m_size.height/2));
this->addChild(editBox);
//設置預置文本
editBox->setPlaceHolder("please input:");
//設置文本字體的色彩
editBox->setFontColor(ccc3(255,0,0));
//設置最年夜長度 ,按說這個處所是輸出框文字的長度,然則在win32上不論用,移植到android的時刻是管用的
editBox->setMaxLength(1);
//setInputMode()設置輸出類型,可以包含以下的幾種
// kEditBoxInputModeAny: 開啟任何文本的輸出鍵盤,包含換行
// kEditBoxInputModeEmailAddr: 開啟 郵件地址 輸出類型鍵盤
// kEditBoxInputModeNumeric: 開啟 數字符號 輸出類型鍵盤
// kEditBoxInputModePhoneNumber: 開啟 德律風號碼 輸出類型鍵盤
// kEditBoxInputModeUrl: 開啟 URL 輸出類型鍵盤
// kEditBoxInputModeDecimal: 開啟 數字 輸出類型鍵盤,許可小數點
// kEditBoxInputModeSingleLine: 開啟任何文本的輸出鍵盤,不包含換行
editBox->setInputMode(kEditBoxInputModeAny);
//設置輸出標記,可以有以下的幾種
//kEditBoxInputFlagPassword: 暗碼情勢輸出
//kEditBoxInputFlagSensitive: 敏感數據輸出、存儲輸出計劃且猜測主動完成
//kEditBoxInputFlagInitialCapsWord: 每一個單詞首字母年夜寫,而且伴隨提醒
//kEditBoxInputFlagInitialCapsSentence: 第一句首字母年夜寫,而且伴隨提醒
//kEditBoxInputFlagInitialCapsAllCharacters:一切字符主動年夜寫
editBox->setInputFlag(kEditBoxInputFlagPassword);
//設置鍵盤中return鍵顯示的字符,這個移植android的時刻沒有看出來
editBox->setReturnType(kKeyboardReturnTypeGo);
//包含這些選項
//kKeyboardReturnTypeDefault: 默許應用鍵盤return 類型
//kKeyboardReturnTypeDone: 默許應用鍵盤return類型為“Done”字樣
//kKeyboardReturnTypeSend: 默許應用鍵盤return類型為“Send”字樣
//kKeyboardReturnTypeSearch: 默許應用鍵盤return類型為“Search”字樣
//kKeyboardReturnTypeGo: 默許應用鍵盤return類型為“Go”字樣
//寫上這句話的時刻以下的四個函數才會被挪用
editBox->setDelegate(this);
return true;
}
//完成以下的函數,不雅察他們是什麼時候被挪用的
void HelloWorld::editBoxEditingDidBegin(CCEditBox * editBox)
{
CCLog("begin!");
CCLabelTTF * ttf = CCLabelTTF::create("begin","",24);
ttf->setPosition(ccp(m_size.width/4,m_size.height*1/5));
this->addChild(ttf);
}
void HelloWorld::editBoxEditingDidEnd(CCEditBox * editBox)
{
CCLog("end!");
CCLabelTTF * ttf = CCLabelTTF::create("end","",24);
ttf->setPosition(ccp(m_size.width/4,m_size.height*4/5));
this->addChild(ttf);
}
void HelloWorld::editBoxTextChanged(CCEditBox * editBox,const std::string & text)
{
CCLog("textChanged!");
CCLabelTTF * ttf = CCLabelTTF::create("textChanged!","",24);
ttf->setPosition(ccp(m_size.width/4,m_size.height*3/5));
this->addChild(ttf);
}
void HelloWorld::editBoxReturn(CCEditBox * editBox)
{
CCLog("return");
CCLabelTTF * ttf = CCLabelTTF::create("return","",24);
ttf->setPosition(ccp(m_size.width/4,m_size.height*2/5));
this->addChild(ttf);
char * str = (char *)this->editBox->getText();
CCLabelTTF * text = CCLabelTTF::create(str,"",24);
text->setPosition(ccp(m_size.width/2,m_size.height*2/5));
this->addChild(text);
}