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); }