cc.loader.load有办法加入参数吗?

读取网路图片时用
cc.loader.load({ url: pictureurl, type: objectType }, this.onProgress.bind(this), this.picLoadComplete.bind(this));
如果成功读取后有办法加上一些参数吗?

可能我想知道我现在complete以后load到的图片的代号等等…

有大神知道吗…?

我有想过在外面包一层function,但loader是异步读取所以不行
,如果连续读取多个档案就一定会有顺序问题,希望能加入参数让我更好控制

不是太理解你的需求
正常的加载远程图片是这样的,类似:
var remoteUrl = “http://unknown.org/someres.png”;
cc.loader.load(remoteUrl, function (err, texture) {
// Use texture to create sprite frame
});

function 里的参数texture就是你加载到的图片信息,根据图片信息不就能区分了。

1赞

假设我要加入一阵列的图片到array内 就是
for (let i = 0; i < 10; i++) {
cc.loader.load…

}

好,问题来了 因为是异步处理,
读完图片不一定是地1张读完再来第二张读完第三…
->意思是读完顺序为123456789
实际读完的顺序可能会是第九张,第四张,…
->读完顺序946853721
这时我再放进array内我要马重新排列,要不就是根据图片名称处理,
但总是会想有enum什么之类的可以判定你是不是超前读取了
你说得对,目前是根据图片名排列没错,不过这有点治标不治本
程式码会很难看

在你的camplate方法里把i穿进去就行了

能给个范例吗?
我写的是这样

官方范例有个err跟res

如果我加上括号我也得先填上err跟Res,像下图


这里就不太清楚这两个参数要怎么带入了,更别说加i了

可以换个思路缓存load的texture,比如存在一个ObjectMap里面,资源路径为key,纹理为value:
let textureMap = {};
for (let i = 0; i < 10; i++) {
cc.loader.load(urls[i], (err, texture)=>{
texture && (textureMap[testure.url] = texture);
})
}

1赞

弄个步骤器就好了A到B,B加载操作,然后回到A判断,条件够了就去C

1赞

let node_arr = […]
for (let i = 0; i < 10; i++) {
let node = node_arr[i]
cc.loader.load…
// 这里的i只有一次声明 在这里访问10次i,都是一个变量的值,所以开始下载顺序和下载完成的顺序不一致的时候i就没有意义了
// 不在异步回调里面访问 i, node变量声明了10次,这里访问node应该是各自的开始下载时的对应i的node
}

1赞

1赞

或者你资源名称和node名称一致的话也省去了判断,你获取节点的时候传资源名称不就拿到对应node了吗,代码也不会很难看,不要访问 i 就ok了

1赞

感谢各位回答,小弟痛哭流涕T.T,万分感谢

我的锅,忘记load的完成函数是固定格式的了,按理来说i不用赋值给idx也是没问题的,i会保存下来吧,let可以保存i的当前状态,异步会不会影响我不太清楚,var和let有这个区别

1赞