cocos导出Lua文件,并加载到cocos2d lua工程中

本文介绍了如何将cocos2d-x v3.6项目中的csb文件导出为Lua文件,以提升加载速度并简化回调处理。在cocos v2.3.0.1版本中,通过Cocos Studio支持的Lua文件导出功能,可以方便地实现lua文件的回调,相比c++回调更易用。文章详细讲解了创建窗口基类Dialog.lua和子类的实现,以及touch、event和click事件的处理。在实际操作中遇到的问题是导出时的命名格式错误,可能由文件名重复导致。
摘要由CSDN通过智能技术生成

1.配置
cocos 版本为 v2.3.0.1
cocos2d-x版本为 v3.6

2.需求分析
a. 加载速度 csb文件的加载速度和Lua文件的加载速度据说是lua文件的加载速度略快 重大喜讯!Cocos Studio终于支持导出LUA文件了!
b. 回调特性,lua文件的回调特性使用方式简单。c++的回调特性看着就头疼c++回调特性 ,lua的回调特性在没有导出lua文件的情况下lua回调特性也是很麻烦 导出lua文件的方式就简单很多了 在参考了导出lua文件的回调特性后便有了本文

3 实际操作

创建窗口基类 Dialog.lua

--默认回调函数
function Dialog:onCallBack(sender, type)

end

--回调事件处理
function Dialog:callBackProvider(luaFileName, node, callbackName)
    if not self[callbackName] then  --新增默认回调函数
        callbackName = "onCallBack"
    return handler(self,self[callbackName], node)
end

--窗口初始化
function Dialog:init()
    self:enableNodeEvents()
    local name = self:getDialogName()
    local luaScene = require(name).create(handler(self,self.callBackProvider)) --加载lua文件,并设置回调
    self._layer = luaScene.root  --保存根节点
    if self._layer then
        self:addChild(self._layer)
    end
end
--根据获取窗口获取文件路径
function Dialog:getDialogName ()
    if( self._dialogName and res.ui[self._dialogName] ) then
        return res.ui[self._dialogName]
    else
        print("无法找到窗口名对应的资源路径")
    end
    return ""
end

在子类中只需要实现响应函数即可
login.lua

--click对应的回调
function LoginScene:onLogin(sender)
    print("onLogin")
end
--touch对应的回调
function LoginScene:selectZhangHao(sender, type)
    print("selectZhangHao type = " .. type)
end
--event对应的回调
function LoginScene:seleckServer(sender, type)
    print("seleckServer type = " .. type)
end

3种方式对应的回调 其实都是一样的 touch和event比click多了一个type对应响应的事件
event对应的事件为0,1
touch对应的事件为0 —> began,1 —> moved,2 —> ended,3 —> cancelled

4.碰到的问题
cocos导出lua文件的时候 提示命名格式错误,原因可能是有2个

1.csb文件中的子节点命名重复,csb文件中子节点的命名不能出现同名的情况 即使是不在同一层
2.工程的命名检测没有打开 打开.cfg文件 找到 IsNameStandardized 字段 将"False"修改为="True"即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值