1. EditBox사용할 Layer의 Head를 다음과 같이 설정한다.
#ifndef __ProjectName__MemberLayer__
#define __ProjectName__MemberLayer__
#include "Common.h"
#include "cocos-ext.h" // EditBox사용을 위한 추가
USING_NS_CC_EXT; // EditBox사용을 위한 추가
// CCEditBoxDelegate 추가
class MemberLayer:public CCLayer, public CCEditBoxDelegate
{
public:
virtual bool init();
static CCScene* scene();
CREATE_FUNC(MemberLayer);
///////////////////////////////////////////////////////////////
// EditBox사용을 위한 추가 시작
///////////////////////////////////////////////////////////////
virtual void editBoxEditingDidBegin(CCEditBox* editBox);
virtual void editBoxEditingDidEnd(CCEditBox* editBox);
virtual void editBoxTextChanged(CCEditBox* editBox, const std::string& text);
virtual void editBoxReturn(CCEditBox* editBox);
///////////////////////////////////////////////////////////////
// EditBox사용을 위한 추가 끝
///////////////////////////////////////////////////////////////
private:
void PrepareResources();// 본 페이지에서 사용할 리소스 로드
void StartLayout(); // 전체 레이아웃 구성
void PrepareEditBox(); // 이름, 생년월일, 비밀번호 입력 텍스트박스 생성
CCSpriteBatchNode* batchNode;
CCEditBox* Name; // 이름을 입력할 텍스트박스
CCEditBox* Birth; // 생년월일을 입력할 텍스트박스
CCEditBox* Pwd; // 비밀번호를 입력할 텍스트박스
};
#endif /* defined(__ProjectName__MemberLayer__) */
2. cpp 파일
#pragma mark -
#pragma mark EditBox
void MemberLayer::PrepareEditBox()
{
/*****************************************************************
* 이름 필드
****************************************************************/
Name = CCEditBox::create(CCSizeMake(300, 50), CCScale9Sprite::createWithSpriteFrameName("editBox_bg_normal.png"));
Name->setPosition(Common::centerPoint());
Name->setFontColor(ccRED);
Name->setPlaceHolder("Name");
Name->setPlaceholderFontColor(ccWHITE);
Name->setReturnType(kKeyboardReturnTypeDefault);
Name->setInputMode(kEditBoxInputModeAny);
Name->setTag(1);
Name->setDelegate(this);
this->addChild(Name);
/*****************************************************************
* 생년월일 필드
****************************************************************/
Birth = CCEditBox::create(CCSizeMake(300, 50), CCScale9Sprite::createWithSpriteFrameName("editBox_bg_complete.png"));
Birth->setPosition(ccpAdd(Name->getPosition(), ccp(0, 100)));
Birth->setFontColor(ccRED);
Birth->setInputMode(kEditBoxInputModePhoneNumber);
Birth->setDelegate(this);
this->addChild(Birth);
/*****************************************************************
* 비밀번호 필드
****************************************************************/
Pwd = CCEditBox::create(CCSizeMake(300, 50), CCScale9Sprite::createWithSpriteFrameName("editBox_bg_error.png"));
Pwd->setPosition(ccpAdd(Birth->getPosition(), ccp(0, 100)));
Pwd->setFontColor(ccRED);
Pwd->setInputMode(kEditBoxInputModePhoneNumber);
Pwd->setTag(3);
Pwd->setReturnType(kKeyboardReturnTypeDone);
Pwd->setInputFlag(kEditBoxInputFlagPassword);
Pwd->setDelegate(this);
this->addChild(Pwd);
}
#pragma mark -
#pragma mark EditBox Virtual Methods
void MemberLayer::editBoxEditingDidBegin(cocos2d::extension::CCEditBox *editBox)
{
// EditBox편집이 시작될 때 발생하는 이벤트
}
void MemberLayer::editBoxEditingDidEnd(cocos2d::extension::CCEditBox *editBox)
{
// EditBox편집이 끝날 때 발생하는 이벤트
}
void MemberLayer::editBoxTextChanged(cocos2d::extension::CCEditBox *editBox, const std::string &text)
{
// EditBox내 Text가 변경될 때 발생하는 이벤트
}
void MemberLayer::editBoxReturn(cocos2d::extension::CCEditBox *editBox){}
EditBoxInputMode (EX) setInputMode(kEditBoxInputModeAny))
- kEditBoxInputModeAny = 0,
- kEditBoxInputModeEmailAddr,
- kEditBoxInputModeNumeric,
- kEditBoxInputModePhoneNumber,
- kEditBoxInputModeUrl,
- kEditBoxInputModeDecimal,
- kEditBoxInputModeSingleLine
EditBoxInputFlagType (EX) setInputFlag(kEditBoxInputFlagPassword))
- kEditBoxInputFlagPassword = 0,
- kEditBoxInputFlagSensitive,
- kEditBoxInputFlagInitialCapsWord,
- kEditBoxInputFlagInitialCapsSentence,
- kEditBoxInputFlagInitialAllCharacters
KeyboardReturnType (EX) setReturnType(kKeyboardReturnTypeSend))
- kKeyboardReturnTypeDefault = 0,
- kKeyboardReturnTypeDone,
- kKeyboardReturnTypeSend,
- kKeyboardReturnTypeSearch,
- kKeyboardReturnTypeGo