程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Cocos2d-x中CCEditBox文本輸出框的應用實例

Cocos2d-x中CCEditBox文本輸出框的應用實例

編輯:關於C++

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);
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved