游戏开发中,难免会遇到需要输入大量文字的输入框。而cocos2dx-lua自带的输入框EditBox无法实现换行输入,于是笔者就扩展了一下EditBox输入框,使其支持多行输入。
为避免其他编程伙伴使用的不是cocos2dx或者cocos2dx-lua,笔者先说下设计思想,主要思路是:
一:创建一个支持换行显示的label,用于接收输入框的文字。(因为输入框自带的label不换行)
二:创建一个蒙版,这个蒙版用来遮住原本EditBox自带的label。(不然已经有个label,上面又创建了一个,岂非很尬)
三:事件绑定,在输入框的文字输入事件回调里,将自己创建的label显示为输入框的文字。
下面附上笔者源码:
--region *.lua
--css:2019-04-19
--CTEditBox:custom editbox(自定义编辑框,以支持多行编辑)
local CTEditBox = ccui.EditBox
function CTEditBox:initCT(size,bgUrl,fontSize) --size编辑框大小,bgUrl遮住编辑框原文字的背景图路径,fontSize文字大小
bgUrl=bgUrl or "common_res/img_shirikuang.png"
size=size or self:getParent():getContentSize()
fontSize=fontSize or 28
self:setContentSize(size)
self:setAnchorPoint(cc.p(0