cocos2dx lua 再谈实现EditBox输入框

引言

由于前一段时间用了EditBox控件感觉还是挺好用的,今天总结发现不知不觉写了不少冗余代码,看着着实不爽,决定修改一下,封装成一个公共方法中,以便后续工作中方便调用,也作为一个提醒,时刻告诫自己不要写一行重复的代码!好了,闲言少叙直接上代码:

代码片段

--创建EditBox输入框
function funA:createEditBox(name,bgImg,pos,size,inputMode,fontColor,maxLength,fontSize,placeHolder,funHandle)

    local editTxt= ccui.EditBox:create(size, bgImg,ccui.TextureResType.plistType)  --输入框尺寸,背景图片
    editTxt:setAnchorPoint(0.5,0.5)
    editTxt:setName(name)
    editTxt:setPosition(pos)                        --设置输入框的位置
    editTxt:setFontSize(fontSize)                   --设置输入设置字体的大小
    if maxLength then
        editTxt:setMaxLength(maxLength)             --设置输入长度为6
    end
    editTxt:setFontColor(fontColor)                 --设置输入的字体颜色
    --editTxt:setFontName("simhei")                 --设置输入的字体为simhei.ttf
    editTxt:setPlaceHolder(placeHolder)             --设置预制提示文本
    editTxt:setReturnType(cc.KEYBOARD_RETURNTYPE_DONE)  --输入键盘返回类型,done,send,go等KEYBOARD_RETURNTYPE_DONE
    editTxt:setInputMode(inputMode) --输入模型,如整数类型,URL,电话号码等,会检测是否符合
    editTxt:registerScriptEditBoxHandler(funHandle) --输入框的事件,主要有光标移进去,光标移出来,以及输入内容改变等
--  editTxt:setHACenter() --输入的内容锚点为中心,与anch不同,anch是用来确定控件位置的,而这里是确定输入内容向什么方向展开(。。。说不清了。。自己测试一下)
   
--  self.panelMiddle:addChild(editTxt,1)
    
	return editTxt
end
下面我们来调用一下,别忘了引用哦~:

--创建Editbox输入框   
local fontColor = txtInput:getTextColor()
self.txtInputStr = PublicSystem:createEditBox("txtInputStr","bg/bg_1.png",cc.p(txtInput:getPosition()),
				txtInput:getContentSize(),cc.EDITBOX_INPUT_MODE_NUMERIC,fontColor,6,56,"请输入XX",handler(self,self.editboxhandle))
imgInputStrBg:addChild(self.txtInputStr,1)

--委托方法 
function MyClubLayer:editboxhandle(streventname,sender)
    if streventname == "began" then
    elseif streventname == "ended" then
        if sender:getName() == "a" then
            xxx = sender:getText()
        elseif sender:getName() == "b" then
            xxx = sender:getText()
        elseif sender:getName() == "c" then
            xxx = tonumber(sender:getText())
        end      
    elseif streventname == "return" then
    elseif streventname == "changed" then
    end
end

=================================== the end ====================================


好了,今天的分享就到这里,如有不足之处,还望大家及时指正,随时欢迎探讨交流!!!

猜你喜欢

转载自blog.csdn.net/lxt610/article/details/78335915