996引擎-源码学习:Cocos2d-Lua 的 class(classname, ...)
- 一、核心方法调用顺序
-
- 用户调用入口
- 完整调用链
- 二、__create 工厂方法的三种情形
-
- 情形1:父类为函数(自定义工厂)
- 情形2:父类为Cocos原生类
- 情形3:父类为普通Lua表
- 三、方法职责与内存管理对照表
- 四、正确使用示例
-
- 示例1:安全创建Cocos对象
- 示例2:自定义工厂控制内存
- 示例3:多父类初始化顺序
- 五、高频问题排查
-
- Q1:为什么对象无法显示?
- Q2:如何解决内存泄漏?
- Q3:父类构造函数未被调用
- 版本分析
-
-
- Cocos2d-Lua (或 Quick-Cocos2d-x)
-
- 1. 版权标识
- 2. 模块路径
- 3. 项目定位
- 与其他分支的区别
- 结论
-
scripts\cocos\cocos2d\functions.lua
中实现面向对象的核心是 class(classname, ...)
函数。
该函数为 Lua 提供了类声明、继承、实例化等关键机制,完整实现了基于原型链的 OOP 范式。
方法 | 作用 |
---|---|
local MyClass = class() |
定义类,设置继承链、默认添加 __create 、new 和 create 方法。 |
cls.create() |
用户实例化对象的入口。通过封装 new() 提供一个符合 Cocos2d-x 习惯的静态工厂方法。 |
cls.new() |
1. 调用__create 创建初始实例对象。2. 调用 setmetatableindex 预处理继承链,优化 __index 查询性能。 |