既然是输入框,就要对其监控,在cocos2d-x中提供了CCEditBoxDelegate接口供我们重新其回调函数
HelloWorld.h文件
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
#include "cocos-ext.h"
#include "SimpleAudioEngine.h"
using namespace cocos2d::extension;
class HelloWorld : public cocos2d::CCLayer,public cocos2d::extension::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 recommand to return the exactly class pointer
static cocos2d::CCScene* scene();
CREATE_FUNC(HelloWorld);
//开始进入编辑
virtual void editBoxEditingDidBegin(cocos2d::extension::CCEditBox* pEditBox);
//结束编辑
virtual void editBoxEditingDidEnd(cocos2d::extension::CCEditBox* pEditBox);
//编辑框文本改变
virtual void editBoxTextChanged(cocos2d::extension::CCEditBox* pEditBox,const std::string& text);
//当触发return后的回调函数
virtual void editBoxReturn(cocos2d::extension::CCEditBox* pEditBox);
};
#endif // __HELLOWORLD_SCENE_H__
HelloWorld.cpp文件
#include "HelloWorldScene.h"
#include "cocos-ext.h"
#include "cocos2d.h"
using namespace cocos2d;
using namespace cocos2d::extension;
CCScene* HelloWorld::scene()
{
CCScene * scene = NULL;
do
{
// 'scene' is an autorelease object
scene = CCScene::create();
CC_BREAK_IF(! scene);
// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create();
CC_BREAK_IF(! layer);
// add layer as a child to scene
scene->addChild(layer);
} while (0);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
bool bRet = false;
do
{
//
// super init first
//
CC_BREAK_IF(! CCLayer::init());
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCScale9Sprite* pSprite = CCScale9Sprite::create("player.png");
CCEditBox* pBox = CCEditBox::create(CCSizeMake(300,60),pSprite);
pBox->setPlaceHolder("Please input");
pBox->setPosition(ccp(size.width*0.5,220));
this->addChild(pBox);
//绑定接口
pBox->setDelegate(this);
bRet = true;
} while (0);
return bRet;
}
//开始进入编辑
void HelloWorld::editBoxEditingDidBegin(cocos2d::extension::CCEditBox* pEditBox)
{
CCLOG("Start Edit");
}
//结束编辑
void HelloWorld::editBoxEditingDidEnd(cocos2d::extension::CCEditBox* pEditBox)
{
CCLOG("End Edit");
}
//编辑框文本改变
void HelloWorld::editBoxTextChanged(cocos2d::extension::CCEditBox* pEditBox,const std::string& text)
{
CCLOG("TextChange");
}
//当触发return后的回调函数
void HelloWorld::editBoxReturn(cocos2d::extension::CCEditBox* pEditBox)
{
CCLOG("return");
}