有N个不同的动画,播出时机是在一个范围里。这N个动画都播放完成后才能进入下一个流程。
如何控制进入下一个流程?这块的代码怎么设计比较好呢?
有N个不同的动画,播出时机是在一个范围里。这N个动画都播放完成后才能进入下一个流程。
如何控制进入下一个流程?这块的代码怎么设计比较好呢?
promise
代码是一步步来的,先动手
let anim = '一个动画';
let completeCount = N;
anim.onComplete(()=>{
completeCount--;
});
// TODO 重复剩下的动画
update(){
if(completeCount == 0) {
completeCount = -1;
// TODO 进入下一个流程
}
}
当你看得不爽或者要重复工作时,那你就想想怎么优化吧,比如多个动画难得写那用for循环、update不够优雅,那completeCount这个方法使用触发方式
let anims = [a,b....];
for(let i = 0; i< anims.length; i++){
anims[i].onComplete(()=>{
completeCount--;
});
}
get completeCount(){
return _completeCount;
}
set completeCount(count){
_completeCount = count;
if(count == 0) {
// 下个流程
}
}
如果你没有可选的方案,那么先动手,后优化
以上为伪代码,不对期能否运行以及能否达到预期负责
哇塞偶像
原来属性寄存器还可以这样用的,我之前还以为拿来赋值而已