cocos2d-js当中有时候一个scene由好几个Layer组成、为了逻辑更为清晰、经常要在不同的Layer处理不同的事情。比如说控制层ControlLayer要控制MainLayer当中添加一个精灵
代码如下:
var MainScene = cc.Scene.extend({
onEnter: function () {
this._super();
mainLayer = new MainLayer();
this.addChild(mainLayer, 1, 1); //参数三是为了后面找到mainlayer对象
});
<pre name="code" class="java">var MainLayer = cc.Layer.extend({
ctor: function () {
this._super();
var sprite = new cc.Sprite(res.sprite);
this.addChild(sprite);
},
addSprite: function(){ //用ControlLayer层调用这个函数来添加精灵
var cover = new cc.Sprite(res.coverCard); //覆盖在column牌组上的牌 有三个位置
cover.attr({
x: 100,
y: 100,
scaleX: scaleXY,
scaleY: scaleXY
});
//因为此刻this为ControlLayer对象 用this.addchild(cover,2);显示不出来精灵
self = cc.director.getRunningScene().getChildByTag(1);//通过获取scene然后用getChildByTag来得到MainLayer对象
self.addChild(cover,2);
});
然后新建一个ControlLayer作为控制MainLayer层
<pre name="code" class="java">var ControlLayer = cc.Layer.extend({
ctor: function(){
this._super();
var layer = new MainLayer();
layer.addSprite();
}
});