由于lua代码的特征性,可以写出很多特色的代码,就比如,现在我要说的,直接创建一个单例的代码块,我的是ModuleController,我的思路是获取每一个模块的代码
-- 模块的ctrl数据{[1]=ctrl的名字 ,[2]=ctrl的路径 ,[3]=功能对应的资源plist}--
MODULE_NAME =
{
xxCtrl = {[1] = "xxCtrl", [2] = "game/xxx/xxx", [3] = "xxx.plist"}
}
--获取模块
function ModuleController:getModuleByName(module)
local module_name = module[1]
if _G[module_name] and _G[module_name]["getInstance"] then --已经require的模块
return _G[module_name]:getInstance()
elseif not _G[module_name] and module[2] then --还没有
require (module[2])
return self:getModuleByName(module)
end
end
--[[打开ctrl中的方法
-- @param module_name 模块名字
-- @param is_loading 是否要预加载资源
-- @param func_name 执行模块的方法
-- @param ... 方法参数
-- ]]
function ModuleController:callFuncByModule(module, is_loading, func_name, ...)
if is_loading == true and module then --先加载plist吧
local info = module
if isFileExist(info[3]) then --这个是关于判断这个文件是不是存在的(cocos2dx已经提供啦)
cc.SpriteFrameCache:getInstance():addSpriteFrames(info[3])
else
print("警告:"..info[3].." 不存在!!!")
end
end
--获取模块
local moduleCtrl = self:getModuleByName(module)
if moduleCtrl and moduleCtrl[func_name] then
return moduleCtrl[func_name](moduleCtrl, ...)
end
end
那么如此一个我觉得不错的lua模块管理器就不错啦,有什么好的也可以给出建议