3.8.3下裂代码可以顺利执行
await Promise.all([
this.moveTail(tailLeft, targetLeftPos, true),
this.moveTail(tailRight, targetRightPos, false)
]);
....
private async moveTail(tailNode: Node, targetPosition: Vec3, isLeft:boolean): Promise<void> {
let motionStreakCompTailing = tailNode.getChildByName("tailing").getComponent(MotionStreak);
let motionStreakCompTailingCenter = tailNode.getChildByName("tailing_center").getComponent(MotionStreak);
motionStreakCompTailing.stroke *= 4;
motionStreakCompTailingCenter.stroke *= 4;
const initialStrokeTailing = motionStreakCompTailing.stroke;
const initialStrokeTailingCenter = motionStreakCompTailingCenter.stroke;
return new Promise(resolve => {
// 使用 Utils.jumpTo_v3 来计算跳跃过程中的最高点位置
const jumpHeight = Utils.calculateAdjustedJumpHeight(tailNode.position, true);
const peakPosition = Utils.jumpTo_v3(targetPosition, jumpHeight); // 假设 Utils.jumpTo_v3 是计算跳跃轨迹的函数
setTimeout(() => {
...
}, 420);
tween(tailNode)
.to(0.55, { position: peakPosition, scale: new Vec3(0.05, 0.05, 0.05) }, {
easing: easing.quadInOut,
onUpdate: (target, ratio) => {
// 动态调整 Stroke 宽度
motionStreakCompTailing.stroke = initialStrokeTailing * (1 - ratio * 0.9); // 结束时为0.3倍
motionStreakCompTailingCenter.stroke = initialStrokeTailingCenter * (1 - ratio * 0.9); // 结束时为0.3倍
}
})
.call(() => {
resolve(); // *这里崩溃*
})
.then(tween()
.to(0.3, { opacity: 0 }) // 这里假设tailNode或其子节点有适用的组件来调整透明度
.call(() => {
tailNode.removeFromParent(); // 完成淡出后从父节点中移除
tailNode.destroy(); // 完成淡出后销毁节点
}))
.start();
});
}
....
请问是什么原因导致resolve(); // 这里崩溃
我看了3.8.4 更新内容只有一个牵涉到promise——“ * 修复原生平台上调用 game.restart() 的时候如果有 promise 异常未处理而导致的崩溃问题”
但是我测试是在h5上报错