我采用了node放入array通过一个for loop去动态加载图片

但是结果是每次都只把最后一个图片加载了出来,前面得全部为空,
照着我的代码应该是前面两格同样会显示立绘
this.selectedNode 一直指向最后一个呀。
改为 let selectedNode=this.CardArray[i] 你就知道怎么回事儿了
bundle.load是异步的for是同步的你这样写是有问题的,硬要这么搞可以在循环里面加个await
异步是什么意思还请详解下
你可以理解为for是马上就完成的,加载资源是在过一段时间后才回调
确实有了不一样的地方,虽然结果变成了三个都是同一个图像,按照我的数值应该是不同图像。
这里面this. 的区别到底是什么
this.的我可以理解了,因为bundle是异步的,而let 到底起了什么作用,只要值不一样,就相当于生成了一个新的对象?
你需要看看js的闭包
了解下闭包 +1
你的for循环看似是指给每个男人一个老婆,
实际都指向了最后一个男人曾经站过的位置…
等资源加载完,女人认领男人,女人们发现,那个站着的位置只有一个男人…
最终女人们轮流指给了这个男人.
this.selectedNode = this.CardArray[i] 改成
var obj = this.CardArray[i]
也就是不要用同一个地址存男人…
问题解决了,楼上说的关键消息很对,就是for为同步,loadBundle是异步的(也就是过一段时间执行,这个时候loop其实早就走完了),所以执行的时候,上述函数里的i并不是预先设想顺次得出的
解决方法是把loop方法改成用schedule函数,每隔0.01秒执行
let 在内存中开辟一个新地址变量 , 变量用于保存数据
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。