我有一个MySprite类作为Sprite的子类,带有一些加法方法。
var MySprite = cc.Sprite.extend({
ctor:function(){
this._super();
},
doSomethingStrange:function(){
//meow meow
}
}
);
在游戏场景中,我想从rootNode获取精灵并将其转换为MySprite,以便我可以从MySprite调用doSomethingStrange。但是,我还没有找到任何方式在javascript中输出类型。
var PlayLayer = cc.Layer.extend(new function() {
this.ctor=function () {
this._super();
var rootNode = ccs.csLoader.createNode(res.scene_playscene_json);
this.addChild(rootNode);
};
this.meow_meow = function(rootNode){
cat = rootNode.getChildByTag(numberTagBegin);
// do something here to cast cat from Sprite to MySprite
cat.doSomethingStrange();
};
});
var playScene = cc.Scene.extend({
onEnter:function(){
this._super();
var layer = new PlayLayer();
this.addChild(layer);
}
});
答案 0 :(得分:0)
这是做到这一点的方法: 在你的MySprite中:
var MySprite = cc.Sprite.extend({
ctor:function(){
this._super();
}
}); /*end of extend function call*/
MySprite.prototype.doSomethingStrange = function(){
//meow meow
}
然后您可以访问doSomethingStrange而无需任何投射
this.meow_meow = function(rootNode){
cat = rootNode.getChildByTag(numberTagBegin);
// do something here to cast cat from Sprite to MySprite
cat.doSomethingStrange();
};
您在上一个示例中声明doSomethingStrange
的方式 - 实际上是一种声明私有方法的JavaScript方式(You can read more about Module pattern here,以防您感到好奇)
关于JavaScript继承的风格有很多信息。 This article 可能会有所帮助