Quick-cocos2d-x 组件

在quick的一些demo中,我看到了很多类似于这样的用法

cc(self):addComponent("components.behavior.EventProtocol"):exportMethods()

这一串牵扯到的东西之多,让我一开始就傻眼了,但是一步步看下去后,也没有想象中的复杂

首先看 cc(self) 很奇怪的写法
在framework/cc 目录下,init.lua中有这样一段

-- cc = cc.GameObject.extend()
local GameObject = cc.GameObject
local ccmt = {}
ccmt.__call = function(self, target)
    if target then
        return GameObject.extend(target)
    end
    printError("cc() - invalid target")
end
setmetatable(cc, ccmt)

cc(self)本质上调用了ccmt的__call方法,其实就是调用GameObject.extend(self)

GameObject.extend方法就是给self进行拓展,使其具有components_属性,用来保存其所有的组件。并添加了一些
addComponent removeComponent等方法。

而exportMethods则是在Component.lua中的方法。它的作用也很简单。比如你给对象添加了一个状态机组件,状态机组件中有一些方法比如doEvent(),当你调用了exportMethods后,就不需要再去获得状态机组件来调用doEvent方法,而是可以直接你拓展的对象本身去调用。

quick框架本身提供了一些组件,当然我们也可以自定义组件,只要继承自Component就可以了。
我们也可以通过重写exportMethods方法来控制你要导出的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值