分别找到这2句代码:
所以 cc(self) 就等于调用 cc.GameObject.extend(self) 。
----------------------------------------------------------------------------
原因是因为再 framework/cc/init.lua 中有这样一段定义:
这段代码定义了 cc() 的执行行为,也就是 __call 的调用效果。
Ps:如果不知道 __call 什么意思的可以看一下这里的解释
复制代码
|
所以 cc(self) 就等于调用 cc.GameObject.extend(self) 。
----------------------------------------------------------------------------
原因是因为再 framework/cc/init.lua 中有这样一段定义:
复制代码
|
这段代码定义了 cc() 的执行行为,也就是 __call 的调用效果。
Ps:如果不知道 __call 什么意思的可以看一下这里的解释
[lua] __call metamethod的用处 (如下)
自认为跟C++中的functor比较像,C++中的functor就是重载了operator()的对象,当把一个C++对象当成函数一样调用obj()时,实际上启动了对于obj的operator()的调用,于是一个可被调用的对象就产生了,如果写成obj.()可能会比较符合对象方法的一般做法。
lua table如果设置了metamethod __call,调用对象luaobj()时,会调用到__call方法,具体调用机制跟其它的metamethod没有什么区别。一段简单的代码说明问题:
- ev={}
- functin ev.__call()
- print "called from ev"
- end
-
- setmetatable(ev, ev)
-
- -- test it
- ev()
2919

被折叠的 条评论
为什么被折叠?



