使用了 TestLua Demo中资源中的extern.lua 的class 方法做类的继承
在脚本CardListLayer.lua 中 自定义自己的类:
require("extern")-- 创建层
local CardListLayer = class("CardListLayer")
CardListLayer.__index = CardListLayer
- 层 CardBagLayer 继承
CCLayerfunction CardListLayer.extend(target)
local t = tolua.getpeer(target)
if not t then
t = {}
tolua.setpeer(target, t)
end
setmetatable(t, CardListLayer)
return target
end
-- overwritefunction CardListLayer:init()
-- do samething my init()
return true
end
-- create object
function CardListLayer.create()
local layer = CardListLayer.extend(CCLayer:create())
if nil ~= layer then
layer:init()
end
return layer
end
return CardListLayer
在另一个脚本中调用时
local pLayer = OpenLua("CCardBagLayer") --
local cardListLayer = pLayer:create()
print(type(cardListLayer))
this.layer.addChild(cardListLayer)
其中OpenLua(FileName)
function OpenLua(FileName) return require(CFileName)end
打印出来的 local cardListLayer = pLayer:create() 的类型为 userdata
但在this.layer.addChild(cardListLayer) 报 :error in function ‘addChild’.
argument #2 is ‘’; ‘CCNode’ expected
我的继承方法错了吗 ? 还是有哪地方方法不对 ?对比了TestLua中的 ExtensionTest.lua的
TableViewTestLayer 中的Demo 好像区别只在生成对象在脚本内(TestLua)及另一脚本(我的) 是我返回值有问题吗?
求分析.谢谢