这个方法是想读取一个level.txt,然后每行存成一个数组元素,再返回给其他方法使用level数组,但这个方法的返回数组一直是空的,实际上在loadRes里打印levelSet是赋值成功了,而且loadRes里的匿名函数也加了bind(this),我在loadRes外面var self=this,在loadRes里用self.levelSet也是能赋值成功,出来打印this.levelSet还是空的,这个是怎么回事呢?
下面是代码:
1、用bind(this):
_loadLevel:function(){
this.levelSet = [];
cc.loader.loadRes(‘level’,function(err,data){
if(err){
cc.error(err.message||err);
return;
}
if(data.indexOf(’\r’)>0)
this.levelSet = data.split(’\r\n’);
else
this.levelSet = data.split(’\n’);
}.bind(this));
console.log(this.levelSet);
return this.levelSet;
},
2、用var self=this
_loadLevel:function(){
var self = this;
this.levelSet = [];
cc.loader.loadRes(‘level’,function(err,data){
if(err){
cc.error(err.message||err);
return;
}
if(data.indexOf(’\r’)>0)
self.levelSet = data.split(’\r\n’);
else
self.levelSet = data.split(’\n’);
});
console.log(this.levelSet);
return this.levelSet;
},
可能问题有点小白,但真的被这个作用域搞晕掉了