[已解决]sence间传递参数的问题

现在我需要在两个场景切换的时候传递一个参数过去,比如:
场景1
var HelloWorldLayer = cc.Layer.extend({
score:0,

ctor:function () {

……
this.score += 1;
cc.director.runScene(new EndScene());
}
)};

场景2
var EndScene = cc.Scene.extend({
_score:null,
onEnter:function () {
this._super();
cc.log(“this._score = %d”,this._score);
}
});

我需要在场景2中获取场景1中的score参数,这个怎么做? cocos2d-js的文档太少了,一直没找到……
望各位前辈帮助,谢谢。

一种方案是
可以直接创建一个datamanager类用于存储各种数据
var DataManager = cc.Class.extend({

// 当前的分数
score:0,,

});

然后在main.js中,创建这个datamanager
var dataBase = new DataManager();

其它地方就可以通过dataBase 这个变量访问里面的数据了

很多种方式的

比如全局

比如

var HelloWorldLayer = cc.Layer.extend({
    score:0,

    ctor:function () {
……
      this.score += 1;
      cc.director.runScene(new EndScene(this.score));
}
)};

//场景2
var EndScene = cc.Scene.extend({
        _score:null,
    ctor:function(args){
        this._super();
        this._score = args;
   },
    onEnter:function () {
        this._super();
        cc.log("this._score = %d",this._score);//这个时候score就有了
}
});


```

楼上正解 !!!!!!

MARK! MARK!!!

1、我这个工程,main.js只是在页面打开的时候被调用了一次,然后就是在场景1结束 直接切换到 场景2,所以场景1里面的score变化了之后,“datamanager类用于存储各种数据”这个应该不能及时获取到最新的score吧?
或者就是场景1结束后把参数score先存到 datamanager类用于存储各种数据”,然后切换场景2,那么就看第2个问题……

2、我还是不太明白,场景1的参数score怎么传递到 “datamanager类用于存储各种数据” 这个呢?

正解,非常感谢!和源生的JS一样的传递,不过是要在获取的时候处理一下。
ctor:function(args){
this._super();
this._score = args;
},

这下明白了。

恩恩。上面说的是传参的方案,
我说的是全局的方案,都可以的,

main.js被调用一次以后就产生了一个dataBase对象,其它对象里面要存score是 只要 dataBase.score = this.score, 就存起来了。 另一个场景就可以用了。

谢谢 :7:
备用。

我这里给出一个, 自己写的一个方案. 个人觉得非常好. 下面方法比我简化了一个功能贴出的. 其实下面的这种实现方法还有另外一些非常好用的功能.

一下方式对于 jsb 也是正常运行的.

var dg = dg || {};

/**
 * 包装layer 到scene中
 * @param layer
 * @param args
 * @returns {cc.Scene}
 */
dg.createScene = function(layer, args){
    return dg._scene.initArgs.apply(new dg._scene(), arguments);
};

dg._scene = cc.Scene.extend({

    initArgs : function(layer, args){
        var that = this, _ctor = null;
        args = Array.prototype.slice.call(arguments, 1);

        if(args.length > 0){
            _ctor = layer.prototype.ctor;
            layer.prototype.ctor = null;
        }
        var ly = new layer();
        if(_ctor != null){
            layer.prototype.ctor = _ctor;
            layer.prototype.ctor.apply(ly, args);
        }
        that.addChild(ly);
        return that;
    }
});


```


//使用示例, 对于多个参数也是一样的

var TestLayer1 = cc.Layer.extend({

    ctor : function(){
        this._super();
        var score = 100;
        cc.director.runScene(dg.createScene(TestLayer2, score));
    }
});

var TestLayer2 = cc.Layer.extend({

    ctor : function(score){
        this._super();
        cc.log("上一个场景所得分: " + score);
        var score2 = 200;
        cc.director.runScene(dg.createScene(TestLayer3, score, score2));
    }
});

var TestLayer3 = cc.Layer.extend({

    ctor : function(score1, score2){
        this._super();
        cc.log("上一个场景所得分 score1 : " + score1 + "  score2 : " + score2);

        cc.director.runScene(dg.createScene(TestLayer4));
    }
});

var TestLayer4 = cc.Layer.extend({

    ctor : function(){
        this._super();
        cc.log("这是一个无参数layer");
    }
});


```

你好 ,我想请教一下 dg._scene = cc.Scene.extend({

initArgs : function(layer, args){
    var that = this, _ctor = null;
    args = Array.prototype.slice.call(arguments, 1);

    if(args.length > 0){
        _ctor = layer.prototype.ctor;
        layer.prototype.ctor = null;
    }
    var ly = new layer();
    if(_ctor != null){
        layer.prototype.ctor = _ctor;
        layer.prototype.ctor.apply(ly, args);
    }
    that.addChild(ly);
    return that;
}

});

initArgs 的 layer 参数 都不知道什么类型,怎么可以点得飞起呢 。 有提示吗? 我的提示一直出不来。