很多朋友会发现,在使用cocostudio也就是UI编辑器的时候,软件中明明有个叫TextField输入框的控件,但是却使用不了,而且还不支持按键响应,具体什么情况也没必要去深究,因为路不止一条,我们没必要在一棵树上吊死,我们可以采用另外一种方法来实现提供用户输入这个功能。
具体实现:
Game.h
class Game:public Layer,public EditBoxDelegate
{
pubilc:
static Scene *creatScene();
virtual bool init();
virtual void editBoxEditingDidBegin(EditBox* editBox);
virtual void editBoxEditingDidEnd(EditBox* editBox);
virtual void editBoxTextChanged(EditBox* editBox,const std::string &text);
virtual void editBoxReturn(EditBox *editBox);
CREATE_FUNC(Game);
privite:
}
Game.cpp
bool Game::init()
{
if (!Layer::init())
{
return false;
}
Scale9Sprite* sacel9Spr = Scale9Sprite::create("Game.png"); //创建背景图片(添加一张九位图)
Box = EditBox::create(CCSizeMake(200,80),sacel9Spr); //创建CCEditBox控件
//第一个参数:EditBox控件的大小 //第二个参数:EditBox控件的背景图片
//设置文本字体和文本大小
Box->setFont("Arial"
,
10
);
//设置字体
Box->setFontName("Arial");
//设置控件位置
Box->setPosition(ccp(300,300));
//设置控件中显示的文本
Box->setPlaceHolder("Enter Name");
Box->setFontColor(ccc3(0,0));
//设置软键盘中回车按钮的样子
Box->setReturnType(EditBox::KeyboardReturnType::GO);
//设置输入模式
//Any表示可以输入任何数据
Box->setInputMode(EditBox::InputMode::ANY);
//当前类继承EditBoxDelegate类
Box->setDelegate(this);
this->addChild(Box);
、 return ture;
}
//四个editBox的响应。
void Game::editBoxEditingDidBegin(EditBox* editBox)
{
log("editBox %p DidBegin.",editBox);
}
void Game::editBoxEditingDidEnd(EditBox* editBox)
{
log("editBox %p DidEnd.",editBox);
}
void Game::editBoxTextChanged(EditBox* editBox,const std::string &text)
{
log("editBox %p TextChanged,text: %s",editBox,text.c_str());
}
void Game::editBoxReturn(EditBox *editBox)
{
log("edit return");
}