分享一個lua語言版本的pureMVC。
這個是一個根據AS3(ActionScript 3) pureMVC而轉換過來的lua pureMVC。所有的接口完全跟AS3版本一致,本來是想用在項目之中的,可惜並未被實際應用,雖然,測試了是可用的,所以在此開發,希望有人需要的可以使用,若是有什么錯誤也非常希望得到你的回復。
若是想使用,可以直接查看網上的pureMVC 文檔,我並未對任何一個函數改名或者更換參數位置。
注意,這個PureMVC中的 class(ClassName, BaseName) 函數並不提供,因為此框架本意就是為了用於cocos2d-x-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。
下載地址:http://files.cnblogs.com/files/cqf-zuifangxing/pureMVC.rar
