记一个js异步导致的问题(cocos)
问题写法:
let tempNode : cc.Node = null;
for(let i;i < 5; ++i) {
tempNode = cc.instantiate(this.onePrefab);
cc.loader.loadRes("image", cc.SpriteFrame, function (err, spriteFrame) {
tempNode .getComponent(cc.Sprite).spriteFrame = spriteFrame;
});
tempNode.setPosition(x,y);
tempNode.parent = cc.find('Canvas');
}
该写法由于异步的问题导致只有最后一个节点才有贴图
使用ES6特性修改问题代码
async test() {
let tempNode: cc.Node = null;
for (let i = 0; i < 5; ++i) {
tempNode = cc.instantiate(this.onePrefab);
let func = () => {
return new Promise(resolve => {
cc.loader.loadRes("HelloWorld", cc.SpriteFrame, function (err, spriteFrame) {
tempNode.getComponent(cc.Sprite).spriteFrame = spriteFrame;
resolve();
});
});
}
await func();
tempNode.setPosition(x,y);
tempNode.parent = cc.find('Canvas');
}
}