1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
/*****************************************************
---------------------------------------------------------------------
Action des deux bouttons Start et Stop
---------------------------------------------------------------------
******************************************************/
function action(nb){
if(nb==2)for(i=1;i<anim.length;i++)clearTimeout(anim[i].anima);
else for(i=1;i<artefact.length;i++){
anim[i]=new animObj(artefact[i].nbId,artefact[i].nom,true);
anim[i].anima(i,false,artefact[i].nom,anim[i].varTemp);
}
}
function animObj(unId,quid,varTemp){
this.varTemp=varTemp;
this.unId=unId;
this.quid=quid;
this.anima=go;
this.cls=stop;
}
function go(unId,arret,quid,varTemp){
anim[unId]=this;
this.unId=unId;
this.arret=arret;
this.quid=quid;
setTimeout("animationdEnsemble("+this.unId+","+arret+",'"+this.quid+"',"+varTemp+")",1);
}
function stop(unId){
parseInt(this.unId=unId);
clearTimeout(anim[this.unId].anima);
}
/*****************************************************
---------------------------------------------------------------------
cinematique de l'attraction terrestre / objets
---------------------------------------------------------------------
******************************************************/
function animationdEnsemble(unId,arret,quid,varTemp){
this.h=h;
this.t=t;
this.unId=unId;
this.arret=arret;
this.quid=quid;
this.topOffset=artefact[this.unId].y;
this.getQui=document.getElementById(quid);
this.monSens=artefact[this.unId].direction;
if(!this.arret && artefact[this.unId].estMobile){
//je tombe SI le temps est inférieur au temps calculé
if((this.t<this.tFinal && !this.monSens) || (this.h>=1 && this.monSens)){
!this.monSens?this.top=round(this.topOffset+(t*t*g/2)):this.top=round(this.topOffset-(this.t*this.t*g/2));
getQui.style.top=this.top;
this.topOffset=this.top;
this.t+=0.1;
//je calcule les nouvelles données pour la remontée
if(this.t>=this.tFinal){
this.t=0;
!this.monSens?this.topOffset+=this.h:this.topOffset-=this.h;
this.top=round(this.topOffset);
!this.monSens?this.h=pow(this.vFinale*(1-perte),2)/(2*g):this.h;
!this.monSens?this.vFinale=0:this.vFinale=sqrt(2*g*this.h);
this.tFinal=sqrt(2*this.h/g);
!this.monSens?artefact[this.unId].direction=true:artefact[this.unId].direction=false;
if(this.h>=1)anim[this.unId].cls();
}
}
}
if(varTemp){
varTemp=null;
anim[this.unId].anima(this.unId,false,artefact[this.unId].nom,null);
}
else { anim[this.unId].cls(this.unId); anim[this.unId].anima(this.unId,false,artefact[this.unId].nom,null); }
} |
Partager