文章目录
开发环境: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