【cocos2d-js官方文档】十八、Cocos2d-js v3.0的对象构造和类继
在Cocos2d-JS中,对象的构造方式和Cocos2d-x一样,使用各个类的 在这篇文档中,我们将会介绍如何使用它们,以及简要的实现原理。 1. 弃用的
|
Javascript | JSB | Cocos2d-x |
---|---|---|
cc.Sprite.initWithSpriteFrameName | js_cocos2dx_Sprite_initWithSpriteFrameName | cocos2d::Sprite::initWithSpriteFrameName |
cc.Sprite.initWithSpriteFrame | js_cocos2dx_Sprite_initWithSpriteFrame | cocos2d::Sprite::initWithSpriteFrame |
js_cocos2dx_Sprite_initWithFile | cocos2d::Sprite::initWithFile | |
js_cocos2dx_Sprite_initWithTexture | cocos2d::Sprite::initWithTexture |
这个过程的顺序图如下:
3. 继承
在Cocos2d-html5 2.x中,当我们继承一个类时,我们需要在create
函数中使用不同的init函数,例如:
var MySprite = cc.Sprite.extend({ ctor:function(){ this._super(); // 自定义初始化 } // 添加自己的属性和方法 }); MySprite.create = function(filename,rect){ var sprite = new MySprite(); // 使用材质和矩形区域初始化 sprite.initWithTexture(fileName,rect); return sprite; }; // 创建你的精灵 var sprite = MySprite.create(texture,cc.rect(0,480,320));
在Cocos2d-JS中,我们只需要编写带有正确参数的ctor函数,并调用_super函数就可以了。
var MySprite = cc.Sprite.extend({ ctor:function(filename,rect){ this._super(filename,rect); // 自定义初始化 } // 添加自己的属性和方法 }); // 创建你的精灵 var sprite = new MySprite(texture,sans-serif; font-size:16px; line-height:25.6000003814697px"> 在html5引擎中这很好理解,因为我们支持使用new
操作符。但在JSB中这有点复杂,在
_super
函数中我们会调用Sprite的C++层ctor函数:js_cocos2dx_Sprite_ctor
,这个函数不仅实例化精灵对象,也会调用cc.Sprite.prototype._ctor
并传递参数。_ctor
函数对精灵类真正的初始化函数做了封装,会根据传递的参数来调用不同的初始化函数,这样我们最终就完成了自定义ctor函数的执行。这个过程的顺序图如下:
转载:http://www.cocos2dx.net/post/238
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!