分享一個lua語言版本的pureMVC。框架
這個是一個根據AS3(ActionScript 3) pureMVC而轉換過來的lua pureMVC。全部的接口徹底跟AS3版本一致,原本是想用在項目之中的,惋惜並未被實際應用,雖然,測試了是可用的,因此在此開發,但願有人須要的能夠使用,如果有什麼錯誤也很是但願獲得你的回覆。函數
如果想使用,能夠直接查看網上的pureMVC 文檔,我並未對任何一個函數更名或者更換參數位置。測試
注意,這個PureMVC中的 class(ClassName, BaseName) 函數並不提供,由於此框架本意就是爲了用於cocos2d-x-lua中。ui
爲方便用戶在此提供函數:lua
function class(classname, ...) local cls = {__cname = classname} local supers = {...} for _, super in ipairs(supers) do local superType = type(super) assert(superType == "nil" or superType == "table" or superType == "function", string.format("class() - create class \"%s\" with invalid super class type \"%s\"", classname, superType)) if superType == "function" then assert(cls.__create == nil, string.format("class() - create class \"%s\" with more than one creating function", classname)); -- if super is function, set it to __create cls.__create = super elseif superType == "table" then if super[".isclass"] then -- super is native class assert(cls.__create == nil, string.format("class() - create class \"%s\" with more than one creating function or native class", classname)); cls.__create = function() return super:create() end else -- super is pure lua class cls.__supers = cls.__supers or {} cls.__supers[#cls.__supers + 1] = super if not cls.super then -- set first super pure lua class as class.super cls.super = super end end else error(string.format("class() - create class \"%s\" with invalid super type", classname), 0) end end cls.__index = cls if not cls.__supers or #cls.__supers == 1 then setmetatable(cls, {__index = cls.super}) else setmetatable(cls, {__index = function(_, key) local supers = cls.__supers for i = 1, #supers do local super = supers[i] if super[key] then return super[key] end end end}) end if not cls.ctor then -- add default constructor cls.ctor = function() end end cls.new = function(...) local instance if cls.__create then instance = cls.__create(...) else instance = {} end setmetatableindex(instance, cls) instance.class = cls instance:ctor(...) return instance end cls.create = function(_, ...) return cls.new(...) end return cls end
函數來源cocos2d-x-Lua。spa
下載地址:http://files.cnblogs.com/files/cqf-zuifangxing/pureMVC.rarcode