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

arrêter un clip qui "tourne" indéfiniment - Flash/ActionScript - Programmation

Marsh Posté le 14-05-2009 à 23:02:37    

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!

Reply

Marsh Posté le 14-05-2009 à 23:02:37   

Reply

Marsh Posté le 15-05-2009 à 14:11:33    

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.
Reply

Marsh Posté le 15-05-2009 à 22:40:38    

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?
 

Reply

Marsh Posté le 15-05-2009 à 23:33:21    

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.
Reply

Marsh Posté le 16-05-2009 à 20:32:47    

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  :)

Reply

Marsh Posté le 16-05-2009 à 23:03:51    

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


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

Marsh Posté le 17-05-2009 à 12:03:20    

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

Reply

Marsh Posté le 17-05-2009 à 15:33:46    

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.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed