美文网首页Lua点滴cocos 2dxLua
给lua文件注入插件的方法

给lua文件注入插件的方法

作者: 禹子歆 | 来源:发表于2017-01-07 16:45 被阅读73次

1. 初衷

好久没有更新博客了,之前写了lua元表相关的东西,如果对元表不理解的话,可以在站内搜索一下lua的元表以及多继承
现在在用quick cocos在写一款游戏,等空闲了可以来更新一下躺过的坑。
闲话少说,现在用cocos开发,走的路子多是策划或者美术拼出界面(cocos studio),然后到处csb文件程序加载,再对界面进行各项处理(creator没用过)。
于是问题来了,一般的做法,将csb读取过来作为layer的child,可能会出现非常多次的对其getChild(可能层次很深),对csb上的某个控件进行setString、setTexture等,怎么做比较好?

2. 解决方案

提供几个解决方案:

* 写一个公用方法,获取csb的控件,每次都先取得控件后对其操作
* 写很多个公用方法,对setString的操作啊,对setTexture的操作啊都写上
* 写很多个local方法,代码一样
* 也是写很多个公用方法,分成各个插件,layer自己选择要去组装哪些

3. 插件的实现方法

非常简单,只需要几步

  • 写插件,e.g:
local ext = {}
function ext:setString()
    -- do set string
end

return function (layer)
    for k, v in pairs(ext) do
        -- 这里加上assert是怕覆盖了原有的字段
        assert(not layer[k], string.format("funciton %s exist", k))
        layer[k] = v
    end
end
  • 注入
local layer = display.newLayer()
require("ext")(layer)
  • 使用
    这样就可以直接使用
layer:setString()

4. 总结

使用这种注入的方法,可以大幅度减少代码的重复量,也可以不用增加很多公用的方法,安全且高效。
注入的方法重点是ext的return 函数,对于使用.的方法需要有另外的写法。
等空闲时间,我会整理一个管理scene layer的框架,包括读取csb等框架传到github上。

相关文章

  • 给lua文件注入插件的方法

    1. 初衷 好久没有更新博客了,之前写了lua元表相关的东西,如果对元表不理解的话,可以在站内搜索一下lua的元表...

  • lua脚本

    lua脚本 执行方法下载lua 打开cmd 或者命令界面 执行lua使用lua 文件

  • Wireshark导出H264的插件

    一、Lua插件代码怎么用? 在wireshark安装目录下有一个init.lua的脚本文件在init.lua的最后...

  • Kong插件开发工具包

    Kong插件开发工具包 插件开发工具包(或称 PDK),是一组 Lua 方法和变量,插件可以使用这些方法和变量实现...

  • 魔兽世界插件编程解析(二)

    除了官方支持的元数据之外,在自定义插件的.toc文件中还可能包含许多其他的标记。TOC文件可以列出每个Lua文件(...

  • SLua-Lua调用自定义C#类

    需要在Lua中调用c#类添加特性[CustomLuaClass],在Lua中调用方法的时候,给方法添加[MonoP...

  • LuaIde slua Api api 生成

    插件下载地址: sluaApi生成插件 注意: luaide 由于支持多套lua 解决方案,而每套lua方案会有多...

  • LuaIde ulua Api生成

    插件下载地址: uluaApi生成插件 注意: luaide 由于支持多套lua 解决方案,而每套lua方案会有多...

  • LuaIde xlua Api生成

    插件下载地址: xluaApi生成插件 注意: luaide 由于支持多套lua 解决方案,而每套lua方案会有多...

  • webpack让文件动起来(css和js文件哈希变化)

    HtmlWebpackPlugin插件,可以把打包后的 CSS 或者 JS 文件引用直接注入到 HTML 模板中,...

网友评论

    本文标题:给lua文件注入插件的方法

    本文链接:https://www.haomeiwen.com/subject/poufbttx.html