기타 Editbox관련 설정들은 책 p.386~를 참고할 것.
Editbox 관련하여 특정 동작을 취할 때 미리 지정한 메소드가 자동으로 호출되는 것.
- Delegate를 사용할 클래스에 public EditBoxDelegate를 상속받음.
Colored By Color Scripter™
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class HelloWorld : public Layer, public EditBoxDelegate { public: // there's no 'id' in cpp, so we recommend returning the class instance pointer static cocos2d::Scene* createScene(); virtual bool init(); CREATE_FUNC(HelloWorld); //Editbox 활성화(클릭)시 virtual void editBoxEditingDidBegin(EditBox* editBox); //Editbox 활성화 종료시 virtual void editBoxEditingDidEnd(EditBox* editBox); //Editbox 내용이 변경되었을때 virtual void editBoxTextChanged(EditBox* editBox, const std::string& text); //Editbox에서 return키를 눌렀을 때 virtual void editBoxReturn(EditBox* editBox); }; |
Colored By Color Scripter™
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } auto edit = EditBox::create(Size(300, 50), Scale9Sprite::create("box.png")); edit->setPosition(Vec2(160, 240)); edit->setPlaceHolder("NAME :"); edit->setFontColor(Color3B::BLUE); //박스 내 폰트 컬러. 플레이스 홀더와 유저 인풋은 따로 설정해줘야함. // edit->setFont("Abduction.ttf", 16); //폰트 타입 및 크기 설정 edit->setMaxLength(16); //안드로이드에서만 작동. 윈도우에서는 X //edit->setColor(Color3B::BLUE); this->addChild(edit); edit->setDelegate(this); //editbox에 delegate의 구현위치를 알려줌 return true; } void HelloWorld::editBoxEditingDidBegin(EditBox* editBox) { CCLOG("DidBegin()"); } void HelloWorld::editBoxEditingDidEnd(EditBox* editBox) { CCLOG("DidEnd()"); } void HelloWorld::editBoxTextChanged(EditBox* editBox, const std::string& text) { CCLOG("TextChanged()"); } void HelloWorld::editBoxReturn(EditBox* editBox) { CCLOG("Return() - Editbox return : %s", editBox->getText()); } |