2016-05-30 97 views
0

我在cocos2d-JS新的,我想简化我的代码,但我有问题就在这里这里的代码this.addChild不是一个函数的cocos2d-JS

var GameLayerEasy = cc.Layer.extend({ 

ctor:function() { 
    // 1. super init first 
    this._super(); 

    this.addBG4(); 
}, 

addBG4: function(){ 
    var size = cc.director.getWinSize(); 
    var sprite = new cc.Sprite.create(res.BG4_png); 
    sprite.setPosition(size.width/2, size.height/2); 
    this.addChild(sprite, 0); 
} 
}); 

也没关系与此代码,但我有很多GameLayer情况下,并使用相同的addBG4,如果我键入addBG4功能又各自GameLayer所以我想改变这样的

var GameLayerEasy = cc.Layer.extend({ 
ctor:function() { 
    // 1. super init first 
    this._super(); 

    addBG4(); 
}, 
}); 

function addBG4(){ 
    var size = cc.director.getWinSize(); 
    var sprite = new cc.Sprite.create(res.BG4_png); 
    sprite.setPosition(size.width/2, size.height/2); 
    this.addChild(sprite,0); 
} 

代码的效率不高,但我得到这个错误this.addChild is not a function 有人可以帮助我的代码,请告诉我,什么是错,谢谢

+0

这只是一个JavaScript问题。与椰子无关。在第一个例子中,'this'代表GameLayerEasy实例,而第二个“this”代表全局,即窗口对象。 –

+0

@РоманГуйван谢谢你的解释。但我仍然对此感到困惑 – Pentolan

回答

0

我现在算起来, 我想是这样,我的代码工作

var GameLayerEasy = cc.Layer.extend({ 
    ctor:function() { 
    this._super(); 

    addBG4(this); 
}, 
}); 

function addBG4(that){ 
    var size = cc.director.getWinSize(); 
    var sprite = new cc.Sprite.create(res.BG4_png); 
    sprite.setPosition(size.width/2, size.height/2); 
    that.addChild(sprite,0); 
} 
-1

试试这个

function addBG4(){ 
    var size = cc.director.getWinSize(); 
    var sprite = new cc.Sprite(res.BG4_png); 
    sprite.setPosition(size.width/2, size.height/2); 
    this.addChild(sprite,0); 
    } 
+0

感谢您的帮助,我试图用您的建议更改我的代码,但我仍然有错误'精灵不是构造函数' – Pentolan

+0

因为它是新的cc.Sprite(res.BG4_png );或cc.Sprite.create(...)我已经提交了一个编辑。也不需要addChild调用中的'新'部分,最后 - 这不会解决范围问题。 –

+0

@РоманГуйван仍然有错误'this.addChild不是一个函数',顺便说一句,谢谢我现在想。 – Pentolan