Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完成多个setInterval函数后执行代码_Javascript_Html_Multithreading_Css_Css Animations - Fatal编程技术网

Javascript 完成多个setInterval函数后执行代码

Javascript 完成多个setInterval函数后执行代码,javascript,html,multithreading,css,css-animations,Javascript,Html,Multithreading,Css,Css Animations,大家好,提前感谢大家抽出时间 我在一个涉及同步CSS3动画的网站上工作。我正在使用setInterval()调用来运行动画。我正在寻找动画完成后调用函数的最佳方式 下面的代码只是解释我的问题的一般示例。按下开始按钮时,将调用三个setInterval()函数。一个为平移设置动画,一个为缩放设置动画,最后一个为旋转设置动画。我的问题的实质是,如何运行一些代码——为了便于讨论,让我们说一下console.log(“我们做到了!”);-调用最后一个clearInterval()时 我可以想象一个布尔网

大家好,提前感谢大家抽出时间

我在一个涉及同步CSS3动画的网站上工作。我正在使用setInterval()调用来运行动画。我正在寻找动画完成后调用函数的最佳方式

下面的代码只是解释我的问题的一般示例。按下开始按钮时,将调用三个setInterval()函数。一个为平移设置动画,一个为缩放设置动画,最后一个为旋转设置动画。我的问题的实质是,如何运行一些代码——为了便于讨论,让我们说一下console.log(“我们做到了!”);-调用最后一个clearInterval()时

我可以想象一个布尔网络跟踪哪些动画已经完成,并在抛出所有标志时调用代码,但我希望这里能找到一个更优雅的解决方案

再次感谢

//全局变量声明
var adc=adc |{};
adc.tWrap=document.createElement('div');
adc.sWrap=document.createElement('div');
adc.rWrap=document.createElement('div');
adc.btn=document.createElement(“按钮”);
//设置对象样式、附加到主体、应用侦听器
adc.init=函数(){
adc.setDiv(adc.tWrap,“变换包裹”,22,22,200,200,1,”;
adc.setDiv(adc.sWrap,“标度包络”,22,22,150,150,2,“,”);
adc.setDiv(adc.rWrap,“旋转包裹”,22,22,100,100,3,“黄色”);
adc.setBtn(adc.btn,“开始btn”,25,25,50,50,“开始”);
var body=document.getElementsByTagName('body');
body[0]。appendChild(adc.tWrap);
adc.tWrap.appendChild(adc.sWrap);
adc.sWrap.appendChild(adc.rWrap);
adc.rWrap.appendChild(adc.btn);
adc.btn.addEventListener('click',adc.click,true);
}
adc.setDiv=函数(a、id、T、L、H、W、z、bg){
a、 id=id;
a、 style.position='绝对';
a、 style.top=T+“px”;
a、 style.left=L+“px”;
a、 style.height=H+“px”;
a、 style.width=W+“px”;
a、 style.zIndex=z;
a、 style.borderWidth=“3px”;
a、 style.borderStyle=“solid”;
a、 style.backgroundColor=bg;
}
adc.setBtn=函数(a、id、T、L、H、W、txt){
a、 id=id;
a、 type=“按钮”;
a、 textContent=txt;
a、 style.position='绝对';
a、 style.top=T+“px”;
a、 style.left=L+“px”;
a、 style.height=H+“px”;
a、 style.width=W+“px”;
}
//事件侦听器
adc.click=函数(){
如果(!adc.animate.runLock()){
adc.animate.trans.start();
adc.animate.scale.start();
adc.animate.rotate.start();
}
}
//动画例程(setInterval调用)
adc.animate={
runLock:function(){
如果(adc.animate.trans.run==0&&adc.animate.scale.run==0&&adc.animate.rotate.run==0){
返回false;
}否则{
返回true;
}
},
反式:{
运行时间:0,
计数:0,
国旗:错,
开始:函数(){
this.run=setInterval(函数(){
adc.animate.trans.EXE()
}, 10);
},
停止:函数(){
clearInterval(this.run);
this.run=this.count=0;
this.flag=false;
},
EXE:function(){
如果(!this.flag){
这是0.count+=0.5;
}否则{
这是0.count-=0.5;
}
如果(this.count>=45){
this.flag=true;
}
adc.tWrap.style.transform=“translateX”(+this.count+“px)”;
如果(this.count=1.9){
this.flag=true;
}
adc.sWrap.style.transform=“缩放(“+this.count+”);
如果(this.count=90){
this.flag=true;
}
adc.rWrap.style.transform=“旋转(“+this.count+”deg)”;

if(this.countLo Dash)调用了一个方便的函数,该函数在一定次数的调用后执行给定的函数。例如,以下函数仅在所有超时完成后执行

var finish=\在(5,函数()之后{
log('All functions completed!');
});
setTimeout(函数(){console.log('A');finish();},500);
setTimeout(函数(){console.log('B');finish();},1000);
setTimeout(函数(){console.log('C');finish();},1500);
setTimeout(函数(){console.log('D');finish();},2000);
setTimeout(函数(){console.log('E');finish();},2500);