cocos2dx3.16输入框:TextField和EditBox的使用

本文介绍了cocos2dx3.16中的TextField和EditBox控件,包括它们的功能、使用方法及区别。CCTextFieldTTF基于CCLabelTTF,CCEditBox则基于CCControlButton并集成输入法功能。CCEditBox的使用包括创建、设置属性、事件处理等,其自动处理键盘显示和隐藏,提供便捷的编辑框交互体验。
摘要由CSDN通过智能技术生成

cocos2dx3.16引擎为我们提供了两类编辑框的控件:

        (1)CCTextFieldTTF(基于CCLabelTTF)

self.textField = self.node_root:getChildByName("TextField")
self.textField:setSingleLineEnabled(false)  -- true:单行输入 false:多行输入
-- self.textField:setFontName("res/font/Arial.ttf")
-- self.textField:setInputMode(cc.EDITBOX_INPUT_MODE_ANY)  -- ExtensionConstants.lua
self.textField:addEventListener(function(sender, eventType)
    -- GuiConstants.lua
    if eventType == 0 then
        -- print("ccui.TextFiledEventType.attach_with_ime")
    elseif eventType == 1 then
        -- print("ccui.TextFiledEventType.detach_with_ime")
    elseif eventType == 2 then
        -- print("ccui.TextFiledEventType.insert_text")
        print(sender:getString())
    elseif eventType == 3 then
        -- print("ccui.TextFiledEventType.delete_backward")
    end
end)

(2)CCEditBox(基于CCControlButton)

self.editBox_bg = self.node_root:getChildByName("editBox_bg")
self.editBox = ccui.EditBox:create(self.editBox_bg:getContentSize(), "res/editbox_bg.png", ccui.TextureResType.plistType)
self.editBox:setPlaceHolder("占位文本")
self.editBox:setInputMode(6)
self.editBox:setInputFlag(cc.EDITBOX_INPUT_FLAG_INITIAL_CAPS_WORD)  -- ExtensionConstants.lua
self.editBox:setReturnType(cc.KEYBOARD_RETURNTYPE_DONE)  -- ExtensionConstants.lua
self.editBox:setAnchorPoint(cc.p(0, 0.5))
self.editBox:setPosition(self.editBox_bg:getPosition())
self.editBox:setFontColor(cc.c3b(255, 255, 255))
self.editBox:registerScriptEditBoxHandler(function(eventType)
    if eventType == "began" then
        -- print("began")
    elseif eventType == "return" or eventType == "ended" then
        -- print(eventType)
        print(self.editBox:getText())
    elseif eventType == "changed" then
        -- print("changed")
    end
end)
self.node_root:addChild(self.editBox)

(3)使用Text显示多行内容模拟EditBox多行输入:

-- 用于显示EditBox输入的内容
self.showText = self.node_root:getChildByName("Text")
self.showText:setTouchEnabled(false)
self.showText:setString("占位文本")
 
-- 可点击的背景图片,点击触发EditBox的点击事件
self.editBox_bg = self.node_root:getChildByName("editBox_bg")
self.editBox_bg:setTouchEnabled(true)
self.editBox_bg:addTouchEventListener(function(sender, eventType)
    if eventType == ccui.TouchEventType.ended then
        self.editBox:touchDownAction(self.editBox, ccui.TouchEventType.ended)
    end
end)
 
-- EditBox,隐藏
self.editBox = ccui.EditBox:create(self.editBox_bg:getContentSize(), "res/editbox_bg.png", 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值