cocos2d+lua绑定关系理解——二

本文详细探讨了cocos2d与Lua结合时,对象如何通过元表(metatable)实现继承体系。以cc.Sprite为例,说明了元表中的"__index"、"__newindex"等方法如何处理用户数据(userdata)和表(table)的操作,以及如何实现加减乘除、比较和内存管理等功能。通过理解这些机制,可以更好地在Lua中使用和扩展cocos2d对象。
摘要由CSDN通过智能技术生成

全面的理解cocos+Lua的绑定关系需要更加深入理解cocos和lua的交互中所操作的表(table),这些表大多存在于注册表中。

首先来看cocos中的对象对应lua中的userdata,绑定的元表

以cc.Sprite为例

["cc.Sprite"] = {--table: 0x0032c690
    ["new"] = "function: 0x00b9b168",
    ["__lt"] = "function: 0x0032cbf0",
    ["__sub"] = "function: 0x0032cc58",
    ["__newindex"] = "function: 0x0032c710",
    ["__eq"] = "function: 0x0032cc30",
    ["__le"] = "function: 0x0032cc10",
    ["createWithSpriteFrame"] = "function: 0x00b9be50",
    ["createWithSpriteFrameName"] = "function: 0x00b9be00",
    ["tolua_ubox"] = "table: 0x002c86f0" , -- loop table,
    ["createWithTexture"] = "function: 0x00b9b5c0"
    ["__div"] = "function: 0x0032c6b8",
    ["__index"] = "function: 0x0032c6f0",
    ["__gc"] = "function: 0x002c1a90",
    ["__call"] = "function: 0x0032cc98",
    ["__mul"] = "function: 0x0032cc78",
    ["__add"] = "function: 0x0032c730",
    [".metatable"] = table: 0x002ca9c8,
    ......
},
["cc.Node"] = {--table: 0x002ca9c8
    ["visit"] = "function: 0x002cc550",
    ["setVisible"] = "function: 0x002cddb8",
    ["__index"] = "function: 0x002c7ec8",
    ["getPosition"] = "function: 0x010b3bf8",
    ["setPosition"] = "function: 0x002cccb8",
    ["setRotation"] = "function: 0x002cc030",
    ["create"] = "function: 0x002cd220",
    ["init"] = "function: 0x002cbfa8",
    ["__newindex"] = "function: 0x002c7ee8",
    ["__call"] = "function: 0x002cb588",
    ["__eq"] = "function: 0x002cb650",
    ["__add"] = "function: 0x002c7f08",
    ["__sub"] = "function: 0x002ca9f0",
    ["__gc"] = "function: 0x002c1a90",
    ["__lt"] = "function: 0x002c7f48",
    ["__mul"] = "function: 0x002caa10",
    ["__le"] = "function: 0x002c7f68",
    ["tolua_ubox"] = "table: 0x002c86f0" , -- loop table,
    ["__div"] = "function: 0x002c7f28",
    ["new"] = "function: 0x002c9e50",
    ["addChild"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值