【Lua】自定义OOP类的声明和定义
来源:互联网 发布:php 一句话木马 菜刀 编辑:程序博客网 时间:2024/05/18 20:08
最近在cocos2d-x引擎附带的代码中发现了这样一段extern.lua
--Create an class.function class(classname, super) local superType = type(super) local cls if superType ~= "function" and superType ~= "table" then superType = nil super = nil end if superType == "function" or (super and super.__ctype == 1) then -- inherited from native C++ Object cls = {} if superType == "table" then -- copy fields from super for k,v in pairs(super) do cls[k] = v end cls.__create = super.__create cls.super = super else cls.__create = super end cls.ctor = function() end cls.__cname = classname cls.__ctype = 1 function cls.new(...) local instance = cls.__create(...) -- copy fields from class to native object for k,v in pairs(cls) do instance[k] = v end instance.class = cls instance:ctor(...) return instance end else -- inherited from Lua Object if super then cls = clone(super) cls.super = super else cls = {ctor = function() end} end cls.__cname = classname cls.__ctype = 2 -- lua cls.__index = cls function cls.new(...) local instance = setmetatable({}, cls) instance.class = cls instance:ctor(...) return instance end end return clsend function schedule(node, callback, delay) local delay = CCDelayTime:create(delay) local callfunc = CCCallFunc:create(callback) local sequence = CCSequence:createWithTwoActions(delay, callfunc) local action = CCRepeatForever:create(sequence) node:runAction(action) return actionend function performWithDelay(node, callback, delay) local delay = CCDelayTime:create(delay) local callfunc = CCCallFunc:create(callback) local sequence = CCSequence:createWithTwoActions(delay, callfunc) node:runAction(sequence) return sequenceend
发现它实际上就是在Lua中实现我们在C++, Java中常用的OOP Class特性
下面这篇Blog详细讲了它的使用方法:
http://www.swfdiy.com/?p=1663
已经解释的很好了,我就不再复述啦 :)
0 0
- 【Lua】自定义OOP类的声明和定义
- 类的定义和声明
- lua oop[1]:属性定义
- Lua的Metatable和OOP相关
- LUA中的OOP(1) --- 类和对象
- 类的声明和定义的区别
- C++ 类的声明和定义
- 类模板的声明和定义
- 二 类的声明和定义
- OC 中类的声明和定义
- 12.1类的定义和声明
- C++类的定义和声明
- c++/MFC类的声明和定义
- 复杂的声明和定义
- 变量的定义和声明
- 定义和声明的区别
- 声明和定义的区别
- 声明和定义的区别
- What is the use of the res/values/public.xml file on Android?
- collection
- 入职体验--linux学习体会
- Linux 使用CDT编辑器编辑C/C++语言时出现的问题和解决方案
- 如何修改音乐的匹配字数
- 【Lua】自定义OOP类的声明和定义
- unity-使用NGUI 两个Button实现左右切换功能
- 生活中十四项万能心理定律
- 判断某个service服务是否正在运行
- jdk,jre,ide概念辨析
- 交叉编译gdb
- js toFixed()
- acm入门搜索-石油数目
- . / .. ~的区别