cocos2d-x3.0rc0版本lua的初始化过程中的一些问题
文章目录
首先调用的是LuaEngine
的init()方法,
在LuaEngine::init
首先初始化了LuaStack
,
然后去加载被被标记为过时的lua api库
其实主要的lua初始化过程在LuaStack
中
LuaStack::init
中首先创建luastate,
然后加载基础类库,
之后加载tolua++
的fix.
再之后就开始注册cocos2d-x在lua中所能使用的函数了
首先注册的是print
函数,这里需要特别注意
luaL_register
的调用会在lua栈中push进_G
这个table
在之后register_all_xxx的时候会调用一个tolua_module
的函数,
而这个函数会用到栈顶的_G
这个table.
|
|
这也就是为什么我们在自己的函数中使用相同的方式register_all_xxx
的时候会报错的原因,
因为_G
已经不在栈里了
其他部分都可以通过读源码了解,但是这个tolua_module
对_G
表的使用方式感觉多少有些不恰当
文章作者 hao
上次更新 2014-10-17