2016-05-30 9 views
0

Ich bin neu in cocos2d-js, und ich möchte meinen Code vereinfachen, aber ich habe ein Problem hier hier den Codethis.addChild ist keine Funktion 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); 
} 
}); 

es ist in Ordnung mit diesem Code, aber ich habe viele GameLayer Instanzen und Verwendung addBG4, dann ist es nicht effizient, wenn ich addBG4 Funktion wieder geben jede GameLayer so ändern ich versuche, den Code wie dieser

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); 
} 

aber ich habe diesen Fehler this.addChild is not a function kann mir jemand mit dem Code helfen, und bitte sagen Sie mir, was mit diesem falsch, danke

+0

Dies ist nur eine JavaScript-Frage. Nichts cocos-bezogen. Im ersten Beispiel steht "dies" für die GameLayerEasy-Instanz, während im zweiten Beispiel "dies" global ist, d. H. Ein Fensterobjekt. –

+0

@ РоманГуйван danke für die Erklärung. aber ich bin immer noch verwirrt über diese – Pentolan

Antwort

0

ich das sehe jetzt, ich so und mein Code bin versucht, funktioniert

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

versuchen diese

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

danke für Hilfe, ich versuche, meinen Code mit Ihrem Vorschlag zu ändern, aber ich habe immer noch Fehler 'Sprite ist kein Konstruktor ' – Pentolan

+0

Weil es entweder neu cc.Sprite (res.BG4_png); oder cc.Sprite.create (...) Ich habe bereits eine Bearbeitung eingereicht. Sie brauchen diesen "neuen" Teil auch nicht im addChild-Aufruf und zuletzt - das wird das Problem nicht beheben. –

+0

@ РоманГуйван hat immer noch den Fehler 'this.addChild ist keine Funktion', btw danke, ich denke es jetzt. – Pentolan