cc.loader.loadRes可否把 err 和 加载到的资源 这两个参数传到另一个函数使用?

如图,由于问题比较小白我直接贴代码。
cc.loader.loadRes(‘Imgs/XXXXXX’,cc.SpriteFrame,function(err,spriteFrame)
{
if (err)
{
cc.error(err.message || err);
return;
}
cc.log('Result should be a sprite frame: ’ + (spriteFrame instanceof cc.SpriteFrame));
});

上面这段加载一张叫做XXXXXX图片,没问题

然后我这样写:

cc.loader.loadRes(‘Imgs/XXXXX’,cc.SpriteFrame,this.imgLoaded(err,spriteFrame),this);

希望在加载完成之后执行一个函数 imgLoaded,传入两个参数err,spriteFrame
但此时err和spriteFrame都为空

如果改为:
cc.loader.loadRes(‘Imgs/XXXXX’,cc.SpriteFrame,this.imgLoaded(this.err,this.spriteFrame),this);
则可以运行,但传过去的两个参数仍然空

请问各位大大巨巨,有没有什么办法能够在加载完成之后执行另一个函数,并把参数传过去?

cc.loader.loadRes(‘Imgs/XXXXX’,cc.SpriteFrame,(err, spriteFrame) => this.imgLoaded(err,spriteFrame));

或者cc.loader.loadRes(‘Imgs/XXXXX’,cc.SpriteFrame, this.imgLoaded, this);

这种写法不支持,loadRes 不能传入 this

1赞

在cc.loader.loadRes外定义var self = this
方法里用self替换this

1赞

嗯。。

1赞

想请问下 为什么加了var self = this就在回调中可以用self了,为什么直接用this就报错没有定义?能够帮忙解释下原理吗?

局部变量,会保留,this是特殊的指当前调用者

这是this指针的问题,js里面方法内部的this指向的是调用这个方法的对象,而cc.loader.loadRes这个方法里的this并不是你当前这个类对象的this,所以从方法外部var self=this,这里的this才是你所需要的和cc.loader.loadRes方法里的this不是同一个东西