cocos2d-x 的lua继承

cocos2d-x 的lua继承,第1张

概述lua的类 (1)lua的类实际上就是lua的 table ,类之间的继承实际上就是吧 table 连到一起了,调用方法和属性,就是先去第一个table搜索如果没有再去连在后面的table里搜索。 (2)lua里的self实际上就是table了,也能代表类名 (3)lua继承 local self = {}setmetatable(self , classA)

lua的类

(1)lua的类实际上就是lua的 table ,类之间的继承实际上就是吧 table 连到一起了,调用方法和属性,就是先去第一个table搜索如果没有再去连在后面的table里搜索。

(2)lua里的self实际上就是table了,也能代表类名

(3)lua继承

local self = {}setMetatable(self,classA)                      在表self基础上建立classA,classA是一个新表setMetatable(classB,classA)                  在表classA基础上建立classB,classB是一个新表

(4)表唯一的标示

classA.__index = classA

2dx的lua继承

(1)class 是 cocos2d-x 的方法
class("A",B) A 继承 B,B必须是lua文件里的类
(2)setMetatable(A,B) 是 lua 的继承, A 继承 B
(3)通过 tolua 的继承 tolua.getpeer(target) target:cc.Sprite:create(img) 是C++的一个对象
再通过 setMetatable(t,ChilSprite) 实现对 C++对象的继承

local ParentOne = class("ParentOne")             function ParentOne:testDemo()    print('ParentOne      demo')end--父类 ParentOnelocal ChilSprite = class("ChilSprite",ParentOne)ChilSprite.__index = ChilSpritefunction ChilSprite.extend(target)    local t = tolua.getpeer(target)                                 --tolua的继承    if not t then        t = {}        tolua.setpeer(target,t)    end    setMetatable(t,ChilSprite)    return targetendfunction ChilSprite:createS(img)    local sprite = ChilSprite.extend(cc.Sprite:create(img))    return spriteendfunction ChilSprite:myFunc(img)    print("ChilSprite  myFunc   "..img)endfunction ChilSprite:goFunc()    print("ChilSprite  goFunc   ")end--父类 ChilSpritelocal ChilLayer = class("ChilLayer",ChilSprite)ChilLayer.__index = ChilLayerfunction ChilLayer.extend(target)    local t = tolua.getpeer(target)    if not t then        t = {}        tolua.setpeer(target,ChilLayer)    return targetendfunction ChilLayer:createL(img)    local sprite = ChilLayer.extend(cc.Sprite:create(img))    return spriteendfunction ChilLayer:myFunc(img)    print("ChilLayer  myFunc   "..img)endlocal function testBcclayer( scene )	local ball = ChilLayer:createL("Images/ball.png")    ball:setposition(cc.p(VisibleRect:center().x - 110,VisibleRect:center().y - 110))    ball:setScale(3)    scene:addChild(ball,1111)    local cball = ChilLayer:createS("Images/ball.png")       --调用父类的方法    cball:setposition(cc.p(VisibleRect:center().x + 110,VisibleRect:center().y + 110))    cball:setScale(3)    scene:addChild(cball,1111)    ball:myFunc("1235")                                      --调用自己的方法,覆盖父类的方法    ball:goFunc()                                            --调用父类的方法    ball:testDemo()                                          --调用父类的父类方法endfunction testBcc(scene)	testBcclayer(scene)end
总结

以上是内存溢出为你收集整理的cocos2d-x 的lua继承全部内容,希望文章能够帮你解决cocos2d-x 的lua继承所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1080533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存