在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
没有想到我也做了一回标题党。其实这里边说的自动还是有夸大其词的部分。其实只是指定文件夹,然后根据指定文件夹数据,加载目录下边的内容而已。 怎么来进行Lua文件的加载 一般情况下,相关的功能需要给他创建一个相关的目录,然后直接通过我写的一个组件指定这个目录的加载位置就行了。不同的目录之间需要明确他们的加载顺序。 为什么要这么做?
实际引用
总结 其实是一个非常简单的功能,但是用处却非常大。可能我不是很会总结这个东西。哈哈。总之分享一下吧 文件 -- local lfs = require("lfs") local AutoRequire = class("AutoRequire") local instance = nil function AutoRequire:getInstance() return instance end function AutoRequire:init(dir) instance.OriginalPath = dir or lfs.currentdir() print("instance.OriginalPath", instance.OriginalPath) end function AutoRequire:getTag() return self._tag end function AutoRequire:getRequirePath() return self._require_path end function AutoRequire:require(path, data) local loadpath = self.OriginalPath..'/'..path assert(lfs.symlinkattributes(loadpath), "Error AutoRequire path not find "..path) lfs.chdir(loadpath) self._tag = data self._require_path = path local initfile = path..'/'.."init.lua" if cc.FileUtils:getInstance():isFileExist(initfile) then -- print("require("..initfile..")") local loadf = path..'/'.."init" -- print("require "..loadf) require(loadf) end for file in lfs.dir(loadpath) do if file ~= "." and file ~= ".." and file ~= "init.lua" and file ~= "loadend.lua" then local f = loadpath ..'/'..file local attr = lfs.attributes(f) local filename = string.gsub(file, ".lua$", "") if attr.mode == "file" and file ~= filename then -- print("require("..path..'/'..file..")") local loadf = path..'/'..filename -- print("require "..loadf) require(loadf) end end end local initfile = path..'/'.."loadend.lua" if cc.FileUtils:getInstance():isFileExist(initfile) then -- print("require("..initfile..")") local loadf = path..'/'.."loadend" -- print("require "..loadf) require(loadf) end self._tag = nil self._require_path = nil lfs.chdir(self.OriginalPath) end instance = AutoRequire.new() cc.exports.AutoRequire = AutoRequire return AutoRequire 2016-09-30 11:36:10 后记 突然间想起来一个好处,现在补充上来。 一次性加载所有的代码。可以让很多语法错误在启动阶段暴露出来,而不是在真正的运行阶段暴露,这样比较方便。
|
请发表评论