await anim1.play();
await anim2.play();
结果两个动画会同时播放
不使用finished callback的情况下,能否第一个动画播放完毕,才播放第二个?
await anim1.play();
await anim2.play();
结果两个动画会同时播放
不使用finished callback的情况下,能否第一个动画播放完毕,才播放第二个?
不能,必须得使用finished callback 而且await 不是你这么用的,await后面是需要跟promise对象才是你要的效果
如果把spine播放改为await/async,大概是下面这样写,另外先弄清Promise/await是什么再去用,不用跟风。
// 构造一个spine的promise包装器,返回一个可返回promise对象的函数
let generatorSpinePromiseFactroy = function( spine ){
let spineAnimations = [];
let spineResolveCallbacks = [];
let spineCompleteHandler = ()=>{
let resolveFunc = spineResolveCallbacks.shift();
if (resolveFunc){
resolveFunc();
}
if ( spineAnimations.length>0 ){
spine.setAnimation(0,spineAnimations.shift(),false);
}
}
spine.setCompleteListener(spineCompleteHandler );
return ( animation )=>{
return new Promise( (resolve,reject)=>{
spineResolveCallbacks.push(resolve);
spineAnimations.push(animation);
if (spineAnimations.length == 1){
spine.setAnimation(0,spineAnimations.shift(),false);
}
} )
}
}
// 用法
let factroy = generatorSpinePromiseFactroy(spineSkeleton);
await factroy("anim1");
await factroy("anim2");