cocos2dx3.17-lua的csb文件使用方法

本文详细介绍了如何在cocos2dx 3.17版本中,结合lua语言加载和操作csb文件。通过手动代码加载csb并获取控件,以及利用mvc的ViewBase类方法,特别是MainScene.RESOURCE_FILENAME变量的使用,实现csb文件的加载和控件事件处理。此外,还解析了ViewBase类的源码,以解决原生方法无法绑定容器内控件事件的问题。
摘要由CSDN通过智能技术生成

文章新地址


开发环境:xcode 、vscode
开发语言:lua

一、手写代码加载csb文件,并获取控件

    --加载csb场景文件,并将场景添加到节点中。
    local node = cc.CSLoader:createNode("MenuScene.csb")
    self:addChild(node)
    --获取场景中的根节点(场景的跟节点一般是容器)
    local rootLayout = node:getChildByName("Panel_2")
    --强制转换,目前还没搞懂为啥要强制转换,可有可无,测试不写这串代码,一样可以获取到它的子节点。
    -- local rootNode = tolua.cast(root, "ccui.Widget")
    --获取控件(按钮  复选框   图片   文本 进度条  滑动条  出入框等)
    local button =rootLayout:getChildByName("Button_2")
    --给控件添加事件(不同控件,他的事件类型不同,使用的方法也就不同,),下面是给按钮添加点击事件
    button:addClickEventListener(function(sender,eventType) 
                print("点击了开始按钮")
    end)    

控件的通用事件

  一般想封装控件的通用事件的话,可以通过addTouchEventListener(sender,eventType)来添加事件,下面示例:

--[[
    btn 控件本身对象
    ended 事件类型(放开)对应的回调函数
    began 事件类型(按下)对应的回调函数
    moved 事件类型(移动)对应的回调函数
    canceled 事件类型(取消)对应的回调函数
]]
function cc.exports.setButtonFunction(btn, ended, began, moved, canceled)
    btn:addTouchEventListener(function(sender, eventType)
        if eventType == ccui.TouchEventType.began then
            if began then began(sender) end
        elseif eventType == ccui.TouchEventType.ended then
            if ended then ended(sender) end
        elseif eventType == ccui.TouchEventType.moved then
            if moved then moved(sender) end
        elseif eventType == ccui.TouchEventType.canceled then
            if canceled then canceled(sender) end
        end
    end)
end

二、通过mvc ViewBase加载csb文件

博主一般都采用这种方法

local MainScene = class("MainScene",cc.load
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平淡风云

您的打赏是我继续创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值