this.addChild 不是函数 cocos2d-js

this.addChild is not a function cocos2d-js

我是 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,如果我在每个 GameLayer 中再次键入 addBG4 函数,效率不高所以我正在尝试像这样更改代码

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 有人可以帮我处理代码吗,请告诉我这有什么问题,谢谢

试试这个

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

我现在想通了, 我正在这样尝试并且我的代码正在运行

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