问个关于异步加载的问题

我有个滑动列表,我要给列表每个子项,赋不同的背景图片,我用的这个后,子项的图片全都一样了,是不是我写的有问题,要怎么改呢

cc.loader.load(url,(err, image)=>{
if (err == null && sp != null) {
var spriteFrame = new cc.SpriteFrame(image);
sp.spriteFrame = spriteFrame;
}
});
这样写

把这个函数封装一下,你把子项当做参数传过去赋值

for( var i = 0 ; i< childCount; i++){
   this.setChildSprite(children[i], urls[i]);
}

setChildSprite(childNode, url){
   cc.loader.loadRes(url, cc.SpriteFrame, function(err, res){
        if(!res) return;
        childNode.getComponent(cc.Sprite).spriteFrame = res;
   });
}

要是子项很多的话,这样循环异步加载会很慢的吧。

加载多项,不管是同步还是异步,都会很慢的。同步和异步的逻辑也是一样的,只不过异步需要监听或等到加载完毕才执行。
比如一个宠物列表,一般的,只有宠物头像或模型是异步加载。在循环中创建宠物栏prefab,可以很快的看到所有宠物的数据,而宠物头像这些异步加载缓慢逐个显示。
如果同步加载,宠物列表中的每个宠物栏都需要头像模型等加载完后才显示,这个过程很慢,影响用户体验

你这个会不会产生闭包,你试过吗,不过我的问题解决了,我做类似阻塞加载了