读取网路图片时用
cc.loader.load({ url: pictureurl, type: objectType }, this.onProgress.bind(this), this.picLoadComplete.bind(this));
如果成功读取后有办法加上一些参数吗?
可能我想知道我现在complete以后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就是你加载到的图片信息,根据图片信息不就能区分了。
假设我要加入一阵列的图片到array内 就是
for (let i = 0; i < 10; i++) {
cc.loader.load…
}
好,问题来了 因为是异步处理,
读完图片不一定是地1张读完再来第二张读完第三…
->意思是读完顺序为123456789
实际读完的顺序可能会是第九张,第四张,…
->读完顺序946853721
这时我再放进array内我要马重新排列,要不就是根据图片名称处理,
但总是会想有enum什么之类的可以判定你是不是超前读取了
你说得对,目前是根据图片名排列没错,不过这有点治标不治本
程式码会很难看
在你的camplate方法里把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);
})
}
弄个步骤器就好了A到B,B加载操作,然后回到A判断,条件够了就去C
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
}
或者你资源名称和node名称一致的话也省去了判断,你获取节点的时候传资源名称不就拿到对应node了吗,代码也不会很难看,不要访问 i 就ok了
感谢各位回答,小弟痛哭流涕T.T,万分感谢
我的锅,忘记load的完成函数是固定格式的了,按理来说i不用赋值给idx也是没问题的,i会保存下来吧,let可以保存i的当前状态,异步会不会影响我不太清楚,var和let有这个区别