cocos2dx CCTextFieldTTF
CCTextFieldTTF是一个提供文本输入的控件。
先上个简单的例子
CCSize size = __winSize; CCTextFieldTTF* textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("input here", FONT_NAME, FONT_SIZE); addChild(textEdit); textEdit->setPosition(ccp(size.width/2, size.height/2));
以上代码只是将控件放到界面上,但是鼠标点点,发现没反应的,没有虚拟键盘出来。那我们就是要做一个功能,当鼠标或者触摸该控件时,弹出虚拟键盘来。
#define FONT_NAME "Thonburi" #define FONT_SIZE 36 // on "init" you need to initialize your instance bool TextFieldTTF02::init() { ////////////////////////////// // 1. super init first if ( !MenuLayer::init() ) { return false; } CCSize size = __winSize; CCTextFieldTTF* textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("input here", FONT_NAME, FONT_SIZE); addChild(textEdit); textEdit->setPosition(ccp(size.width/2, size.height/2)); setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); _textEdit = textEdit; return true; } bool TextFieldTTF02::ccTouchBegan(CCTouch* touch, CCEvent* ev) { _clickPoint = touch->getLocation(); return true; } void TextFieldTTF02::ccTouchEnded(CCTouch* touch, CCEvent* ev) { CCPoint ptClicked = touch->getLocation(); CCPoint pt = ccpSub(ptClicked, _clickPoint); if(abs(pt.x) < 5 && abs(pt.y) < 5) { CCRect rc = _textEdit->boundingBox(); if(rc.containsPoint(ptClicked)) { _textEdit->attachWithIME(); } else { CCLog("%s", _textEdit->getString()); } } }为了实现点击编辑框,弹出虚拟键盘的功能,我们给层使能了触摸功能,在触摸处理里,判断是否点击了输入框,如果是,则弹出虚拟键盘。
如果你是在windows下写这个程序,键盘也许弹不出来