很多朋友会发现,在使用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:
EditBox *box;
}
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控件中显示的字体的颜色,0为白色
box->setFontColor(ccc3(0,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");
}