cocos2dx实现可换行输入框

来源:互联网 发布:精通java c 要饭 编辑:程序博客网 时间:2024/06/06 09:46
#pragma once#include"cocos-ext.h"USING_NS_CC_EXT;class EditBoxScence:public cocos2d::Node,public EditBoxDelegate{private:int nLineLen;//每行字数int fontSize;//字体大小int nLineNum;//当前行数float fontSclae;//字体大小和时间显示尺寸之间的比例cocos2d::Label*showText;//用来展示的文字EditBox* editBox;//输入框void initData();public:EditBoxScence();virtual bool init();virtual void editBoxEditingDidBegin(cocos2d::extension::EditBox* editBox);virtual void editBoxEditingDidEnd(cocos2d::extension::EditBox* editBox);virtual void editBoxTextChanged(cocos2d::extension::EditBox* editBox, const std::string &text);virtual void editBoxReturn(cocos2d::extension::EditBox *editBox);};


#include"EditBoxScence.h"USING_NS_CC;EditBoxScence::EditBoxScence() {init();}void EditBoxScence::initData() {this->nLineLen = 20;this->fontSize = 50;this->nLineNum = 0;}bool EditBoxScence::init(){if (!cocos2d::Node::init()){return false;}this->initData();//---------------------------------添加账号框  editBox = EditBox::create(CCSizeMake(1000, 1000), Scale9Sprite::create("XXXX.png"));editBox->setPosition(ccp(500, 500));editBox->setFontColor(Color4B(0, 0, 0,0));//设置字体颜色 editBox->setPlaceHolder(utility::a_u8("").c_str());//设置预置文本    editBox->setMaxLength(1000);//设置最大长度    editBox->setInputMode(cocos2d::ui::EditBox::InputMode::SINGLE_LINE);//可以输入任何,但是不包括换行   editBox->setInputFlag(cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD);//设置输入标志位    editBox->setReturnType(cocos2d::ui::EditBox::KeyboardReturnType::DONE);//设置返回类型    editBox->setDelegate(this);//当前类继承CCEditBoxDelegate类    this->addChild(editBox);this->fontSclae = 1.6;TTFConfig ttfConfig;ttfConfig.fontFilePath = "res\\font\\lalalala.ttf"; //必须配置ttfConfig.fontSize = this->fontSize;ttfConfig.distanceFieldEnabled = false;ttfConfig.outlineSize = 0;ttfConfig.glyphs = GlyphCollection::DYNAMIC;ttfConfig.customGlyphs = nullptr;//使用TTFConfig配置,来创建TTFshowText = Label::createWithTTF(ttfConfig, "天华散净", TextHAlignment::LEFT,this->nLineLen * this->fontSize/this->fontSclae);showText->setAnchorPoint(Vec2(0,0.5));showText->setPosition(ccp(500, 500));this->addChild(showText);}void EditBoxScence::editBoxEditingDidBegin(EditBox *editBox){//this->initData();CCLOG("start edit");}void EditBoxScence::editBoxEditingDidEnd(EditBox *editBox){CCLOG("end edit");}void EditBoxScence::editBoxReturn(EditBox *editBox){CCLOG("editbox return");}void EditBoxScence::editBoxTextChanged(EditBox *editBox, const std::string &text){showText->setString(text);if (this->nLineNum < showText->getStringNumLines()) {this->nLineNum++;showText->setPosition(showText->getPosition() + Vec2(0, -fontSize / this->fontSclae));}if (this->nLineNum > showText->getStringNumLines()) {this->nLineNum--;showText->setPosition(showText->getPosition() + Vec2(0, fontSize / this->fontSclae));}}


0 0