2016-05-30 82 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