[AS2] problême HitTest

problême HitTest [AS2] - Flash/ActionScript - Programmation

Marsh Posté le 28-06-2011 à 17:20:55    

Bonjour à vous tous.
 
Je vous explique ma situation.
Cela fait deux jours que je m'arrache les cheveux sur un bug grossier de Flash, que je suspecte d'être un bug après les très nombreuses dérives et vérifications que j'ai fait dans mon code avant de venir chercher de l'aide.
 
Mon problème est simple :
J'ai une animation (le clip) faisant apparaître un bouton (contenu dans le clip).
Une fois l'animation terminée, je permet à un bloc (positionné sur le _root) de suivre la position de ma sourie A condition de toucher le Bouton. Lorsqu'il ne touche plus le bouton, je veux que le bloc qui suit la sourie disparaisse. Pour cela, je lui applique une position en dehors de l'affichage (c'est barbare mais bon). Le problème, c'est qu'il ne disparaît pas. Il comprend lorsque je lui demande de disparaître progressivement (avec une valeur qui incrémente par exemple) mais impossible pour lui de comprendre une valeur fixe. Si vous avez une meilleure solution, je suis preneur !
 
 
Définitions :
cl1 = le clip  
bt+i = les boutons contenus dans l'animation
 

Code :
  1. _root.onEnterFrame = function()
  2. {
  3. /*bulle description*/
  4. for (i = 1; i < 9; i++)
  5. {
  6.  if (cl1["bt" + i].hitTest(_root._xmouse, _root._ymouse) && _root.cl1._currentframe == 24)
  7.  {
  8.   fddes1._x = _root._xmouse + 20;
  9.   fddes1._y = _root._ymouse - 22;
  10.  }
  11.  else
  12.  {
  13.   fddes1._x = 10;
  14.   fddes1._y = 10;
  15.  }
  16. ----------------Le trace qui suit est bien reconnu -------------------------------
  17.  if (cl1["bt" + i].hitTest(_root._xmouse, _root._ymouse))
  18.  {
  19.   trace("jak" );
  20.  }
  21. }
  22. };


 
Merci d'avance pour vos réponses. Dans l'espoir de ne pas trop avoir piétiné la charte du forum.

Reply

Marsh Posté le 28-06-2011 à 17:20:55   

Reply

Marsh Posté le 30-06-2011 à 07:57:41    

Pourquoi utiliser un hitTest() plutôt qu'un mouseOver ?
d'une boucle à l'autre du for, le if/else annule la position de fddes1 déclaré à la précédente boucle...
Il faudrait que tu rajoute dans ton 1er if(), un "break" pour stopper la boucle.


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

Marsh Posté le 30-06-2011 à 12:30:19    

pars que le mousOver n'est pas reconnu :X  
 
Merci beaucoup pour le break. Je ne connaissais pas et en effet ça fonctionne ! Mais je ne comprend pas pourquoi il faut l'utiliser car ça ne réinitialise pas la position mais bien le For qui lui n'agit que sur le numéro du bouton  :??:  
Merci énormément en tout cas ! Je désespérais !

Reply

Marsh Posté le 30-06-2011 à 22:42:34    

Un peu de Logique :
Tu survoles bt7 (par exemple)...
Ta boucle va se faire... il ne se passera rien de 1 à 6, puis à la 7eme incrémentation, le hitTest va être positif, et donc fddes1 ira à la position de ta souris... Oui, mais la boucle ne s'arete pas là !, il y a encore i=8... Et la c'est le drame, ne survolant pas bt8, ton hitTest sera faux, et donc, fddes1 va allez, comme demandé, à x10;y10...
D'où la nécessité de stopper la boucle si le hitTest() est ok.
 
Par ailleur, le mouse_over en AS2, c'est l'evenement .onRollOver.


Message édité par abais le 30-06-2011 à 22:43:29

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