(原创)cocos2d-x 3.0+ lua 学习和工作(2) : 单一继承简单介绍
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了(原创)cocos2d-x 3.0+ lua 学习和工作(2) : 单一继承简单介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2498字,纯文字阅读大概需要4分钟。
内容图文
![(原创)cocos2d-x 3.0+ lua 学习和工作(2) : 单一继承简单介绍](/upload/InfoBanner/zyjiaocheng/1134/cb72e96268ca4a899ae55f9959f37a85.jpg)
-- 星月相随倾心贡献~~~ -- 本章简单介绍一下:单一继承 -- 多继承本人还没有用过,主要是lua多继承感觉不好用~~~个人感觉~~~大汗~! -- example: local Base = class( "Base" ) Base.__index = Base function Base:ctor(...) print( self.__cname ) -- 输出:类名字。class( "xxx" ), self._cname 就是 xxx endfunction Base:init(...) print( "Base:init" ) endreturn Base -- 继承local Test = class( "Test", require"Base" ) Test.__index = Test return Test -- 创建对象 createInst( "Test" ) -- 输出:-- Test-- Base:init-- 创建对象时,new()会自动调用ctor(...)函数,查找Test没有找到这个方法,则查找父类Base,找到方法ctor(...),调用。self.__cname是class( "XXX" )的XXX内容,这里是Test,为什么不是Base,因为对象是Test,汗~大家可以自己研究下!-- 同样的,调用init(...)方法。这里不再描述~~~-- 在Test中增加ctor(...)方法,Base不变function Test:ctor(...) end-- 创建对象 createInst( "Test" ) -- 输出:-- Base:init-- 这次没有输出:Test。-- 原因:Test:ctor(...)方法覆盖了父类的ctor(...)方法,new()调用的是子类的ctor(...)方法。(坑~~~~)-- 怎么让子类调用父类呢?? -- 改变Test中ctor(...)方法,Base不变function Test:ctor(...) self.super.ctor( self, ... ) -- 调用父类的方法end-- 在class中用self.super保存父类,这样self.super就是父类,self.super.ctor( self, ... )就是调用父类的ctor(...)方法。-- 创建对象 createInst( "Test" ) -- 输出:-- Test-- Base:init-- 为什么self.super.ctor( self, ... )使用 "." 符号调用方法ctor,并且还把self传入了。-- 不急 -- 首先,我们研究为什么用 "." 符号。 -- 改变Test中ctor(...)方法,Base不变function Test:ctor(...) self.super:ctor( ... ) -- 调用父类的方法, 注意:参数没有selfend-- 创建对象 createInst( "Test" ) -- 输出:-- Base -- 注意:这里输出变了-- Base:init-- 使用符号 ":" ,那么在ctor(...)中的self是self.super,即这时的self是Test的父类。-- lua中 "." 和 ":" 的区别function a:t( k ) a._t = k end a:t( 5 ) -- 会隐示的传递参数 a ,self = a a.t( a, 5 ) -- 会自动把第一个参数设置为self, self = a-- 所以: self.super:ctor( ... ) -- 参数是:self.super,即Base self.super.ctor( self, ... ) -- 参数是:self,即Test-- ( 好坑~~~~~~~~~~~~~ )-- 完整代码:local Base = class( "Base" ) Base.__index = Base function Base:ctor(...) print( self.__cname ) -- 输出:类名字。class( "xxx" ), self._cname 就是 xxx endfunction Base:init(...) print( "Base:init" ) endreturn Base -- 继承local Test = class( "Test", require"Base" ) Test.__index = Test function Test:ctor(...) self.super.ctor( self, ... ) endfunction Test:init(...) self.super.init( self, ... ) endreturn Test -- 时间有限,希望对各位有帮助~-- 顺便提一句:coco2d-x 继承layer写法local t = class( "t", function () return cc.Layer.create() -- 继承layerend ) -- lua我也是初学者,所以有些地方可能写的不好,或者有更好的方法去实现,希望各位能多多指教,多多指导,星月会努力改进!!!-- 感谢各位花时间阅读本人的作品,谢谢~~~祝各位都能大展宏图,万事顺利~~~下一章节见~~~~
作者使用 cocos2d-x 3.0 + lua学习和工作心得,未经作者允许,请勿转载!在此谢谢各位手下留情~~~
本文没有获得作者本人同意,不得转载,否则必追究相关责任。转载请注明出处!!~~
原文地址:http://www.cnblogs.com/wodehao0808/p/3984869.html
原文:http://www.cnblogs.com/wodehao0808/p/3984869.html
内容总结
以上是互联网集市为您收集整理的(原创)cocos2d-x 3.0+ lua 学习和工作(2) : 单一继承简单介绍全部内容,希望文章能够帮你解决(原创)cocos2d-x 3.0+ lua 学习和工作(2) : 单一继承简单介绍所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。