Cocos2d-X Lua继承问题

local CocoStudioTestScene = class(“CocoStudioTestScene”)
CocoStudioTestScene.__index = CocoStudioTestScene

function CocoStudioTestScene.extend(target)
local t = tolua.getpeer(target)
if not t then
t = {}
tolua.setpeer(target, t)
end
setmetatable(t, CocoStudioTestScene)
return target
end

我不是很明白tolua.getpeer(target)的作用
如果是我平常写的话,大概会直接写CocoStudioTestScene = class(“CocoStudio”, function () return CCScene:create() end ) 这样子
然后function CocoStudioTestScene:create() return self:new() end
不知道这种和使用extend的用法有什么区别
希望有人可以给我解释一下这个tolua.getpeer(target)最终使用create生成的,和我直接那样子继承,然后create的区别

先自己给自己顶一下……

PS:正在看CocoStudioSceneTest,感觉莫名的难……有种坑爹的赶脚

我也看的好蛋疼啊, 跪求详细文档啊. 找了好久都没在2.2.2里面看到有定义class的lua接口,移到c++哪里了?

手动置顶……

class的实现本身也是在复制父类的环境表…看起来没什么差别。class方法毕竟是cocos2dx推荐的lua继承方法,还是用它会让人放心些。

我也想知道这两种继承方式的区别:3:

LZ解决了么?看luatest例子的时候经常看到这句,不知道干嘛用的····

确实是个问题,多半需要从c++代码上才能看出个缘由,希望知道的朋友讲讲

同样看不懂

相比于class(“CocoStudio”, function () return CCScene:create() end ) ,Extend函数的优点是可以把任意的一个table和一个任意的cc.Node对象绑定

坑爹的要命.我还没有弄懂流程是啥样的.呜呼…:6::6::6::6::6:

我也不明白:3:

从这里可以寻求一些理解:

关于setpeer和getpeer的作用
http://www.cocoachina.com/bbs/read.php?tid=215325

— Begin quote from ____

每个C++对象需要存贮自己的成员变量的值,这个值不能够存贮在元表里(因为元表是类共用的),所以每个对象要用一个私有的表来存贮,这个表在tolua里叫做peer表。
元表的__index指向了一个C函数,当在Lua中要访问一个C++对象的成员变量(准确的说是一个域)时,会调用这个C函数,在这个C函数中,会查找各个关联表来取得要访问的域,这其中就包括peer表的查询。

— End quote

—— 阳光七月

还有这里:
lua 类, 继承, 面向对象
http://blog.csdn.net/teng_ontheway/article/details/38900211

— Begin quote from ____

7.我们常见cocos2dx的例子中有大量的extend和tolua.getpeer用法如下:
……
……
用的时tolua.getpeer,其实它的功能就相当于调用了class,……

— End quote