Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1152 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  arrêter un clip qui "tourne" indéfiniment

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

arrêter un clip qui "tourne" indéfiniment

n°1884768
Anthere
Posté le 14-05-2009 à 23:02:37  profilanswer
 

Bonjour à tous!
 
Je suis un panne sur un problème d'ActionScript qui doit être très simple à résoudre, mais depuis deux semaines, je n'ai pas encore trouvée la clé...
Précisons que je débute en AS2!
 
Voilà l'histoire: imaginons une vue en perspective d'un système solaire, sans le soleil, mais avec planètes. Celles-ci décrivent une révolution, une autre, une autre encore, et c'est ça le problème, je n'arrive pas à les stopper. Je souhaiterais que se fige la planète au bout de x révolutions, et que la planète reste affichée.
 
Ci-dessous le script utilisé, sur chaque clip:
onClipEvent(load){
y=100;
speed=5;
radius=100;
xcenter=200;
ycenter=0;
zcenter=100;
angle=264;
fl=150;
;
}
 
onClipEvent(enterFrame){
z=Math.sin(angle*Math.PI/180)*radius+zcenter;
scale=fl/(fl+z);
x=Math.cos(angle*Math.PI/180)*radius;
_x=x*scale+xcenter;
_y=y*scale+ycenter;
_xscale= _yscale = scale*100;
angle+=speed;
if(angle>359){
angle-=360;
_alpha=scale*100;
}
}
 
Merci de bien vouloir me filer un p'tit coup de main!

mood
Publicité
Posté le 14-05-2009 à 23:02:37  profilanswer
 

n°1884959
abais
Posté le 15-05-2009 à 14:11:33  profilanswer
 

Tu met un timer...

 

Avec ton frame rate et ta var speed, tu en deduit le temps qu'il faut pour une revolution... et donc, un timer qui effectuera une action (...stop()...) au bout de X * temps de revolution, ou X est le nbre de tour à faire...

 

Sinon, mieux, tu met un compteur de tour...

 

Tu profite de ton opération  de pseudo modulo qui ramène ton angle à 0 lorsqu'il depasse 360, pour incrémenter une variable prévu à cet effet, et une condition : if(ma variable==tourmax){stop()}


Message édité par abais le 15-05-2009 à 14:13:35

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1885109
Anthere
Posté le 15-05-2009 à 22:40:38  profilanswer
 

Merci pour ces conseils.  
Je ne suis pas sûre d'y arriver comme ça toute seule (vais essayer quand même hein!!), peux-tu me détailler un peu plus le code?
 

n°1885118
abais
Posté le 15-05-2009 à 23:33:21  profilanswer
 

Code :
  1. onClipEvent(load){
  2. tour=0; // J'initialise une variable qui compte les tour... elle part de 0, logique.
  3. limiteTour = 5; // Ici, je met le nombre de tour que je veux...
  4. y=100;
  5. speed=5;
  6. radius=100;
  7. xcenter=200;
  8. ycenter=0;
  9. zcenter=100;
  10. angle=264;
  11. fl=150;
  12. ;
  13. }
  14.  
  15. onClipEvent(enterFrame){
  16. z=Math.sin(angle*Math.PI/180)*radius+zcenter;
  17. scale=fl/(fl+z);
  18. x=Math.cos(angle*Math.PI/180)*radius;
  19. _x=x*scale+xcenter;
  20. _y=y*scale+ycenter;
  21. _xscale= _yscale = scale*100;
  22. angle+=speed;
  23. if(angle>359){
  24.   tour++; // racourci pour dire additionner 1 à la variable tour...
  25.   if (tour == limiteTour){ // Si j'atteins le nombre de tour limite ...
  26.      delete onClipEvent(enterFrame); // ... J'arrête en supprimant l'événement du clip "enterframe"
  27.      }
  28.   angle-=360;
  29.   _alpha=scale*100;
  30.   }
  31. }


Je suis pas sure sur le delete de l'evenement... renseigne toi dans l'aide de flash pour supprimer celui ci !
En tout cas, l'idée est là...


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1885297
Anthere
Posté le 16-05-2009 à 20:32:47  profilanswer
 

Ok, j'ai bien saisi la démarche, et j'ai modifié mon script...  
Mais, la planète ne bouge plus dès le départ  :)

n°1885308
abais
Posté le 16-05-2009 à 23:03:51  profilanswer
 

hum... met nous a disposition le .fla...


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1885361
Anthere
Posté le 17-05-2009 à 12:03:20  profilanswer
 

fla à disposition
 
http://anthere.free.fr/essai4.fla
 
Merci.

n°1885392
abais
Posté le 17-05-2009 à 15:33:46  profilanswer
 

Apparement on ne peut pas supprimer un onClipEvent... une faiblesse de l'action script 1/2...
Soit tu reste sur ce script et tu met speed=0, mais ça ne supprime pas l'enterframe (ce qui est très "sale" )...
 
Soit tu redige + proprement ce code...
Dans tous les cas, il est pas bon d'utiliser le onClipEvent(enterFrame)...
je te suggère mettre le script hors du clip, ce qui permettra de mettre un onEnterFrame qui aura la meme efficacité mais qu'on pourra supprimer !


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  arrêter un clip qui "tourne" indéfiniment

 

Sujets relatifs
JCL utilisation de COND pour arrêter execution jobcharger un swf en dessous de mon clip
Fonction récursive de parcours d'un arbre xml qui boucle indéfinimentprobleme enserer deux clip dans un clip parent
Charger un XML dans un clipVBA excel arreter macro via bouton
[AS2.0 ou 3.0]Finir la lecture d'un clip avant d'en exectuter un autre[AS3] Evenements qui affectent parents, enfants, clip courant...
pop up -->> afficher un movie cliprequete plantée je tourne en rond
Plus de sujets relatifs à : arrêter un clip qui "tourne" indéfiniment


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR