17 juillet 2008

Astuce AS3 : Souris et clip superposés

Peu de temps pour écrire en ce moment. Entre le stage (très prenant) à Megalo(s), les recherches d’appartement, de vacances, et la refonte (chut, c’est un secret) de mon site perso…

Cependant j’ai décidé de partager une petite astuce en AS3 concernant la détection du clic avec des MovieClips imbriqués / superposés.

as3

Tout d’abord admettons que vous ayez un MovieClip dans lequel se trouve un second MovieClip, plus petit, qui doit vous servir de zone de clic. Cela peut arriver notamment avec des PNG transparents si vous souhaitez que la zone de hit ne prenne pas en compte la transparence.

hit1

Ensuite, admettons que vous ayez plusieurs de ces clips superposés les uns par dessus les autres, et que, la zone transparente de ceux-ci passe par dessus la zone de hit des clips inférieurs. Cela peut être le cas que l’on rencontre typiquement dans un carrousel.

hit2

Afin que le clic soit détecté uniquement sur la zone sensible de chaque clip, et ce, même si elle est partiellement ou complètement couverte, et que, le buttonMode (permettant de mettre une “main” comme curseur) soit actif il faut utiliser la propriété hitArea.

Cela peut paraître tout simple, mais beaucoup essayerons d’abord de passer par les propriétés mouseChildren et mouseEnabled avant de se rendre compte qu’aucune combinaison avec ces deux propriétés ne peut venir à bout de ce problème.

Dans le cas où nos deux clips s’appellent “clip1″ et “clip2″ et leur zone de hit “hit”, voici de code à utiliser :

1
2
3
4
5
clip1.hitArea = clip1.hit;
clip2.hitArea = clip2.hit;
 
clip1.hit.buttonMode = true;
clip2.hit.buttonMode = true;

Si votre clip est lié à une classe (ce qui est fort probable) et toujours dans l’hypothèse que la zone de hit s’appelle “hit”, voici le code à utiliser :

1
2
hitArea = hit;
hit.buttonMode = true;

Voilà, une petite astuce très simple, mais qui en aiderai surement plus d’un j’en suis sur.

Commentaires

Norel - 4 septembre 2008

Merci pour cette astuce !

Thibault Leporé - 5 septembre 2008

De rien, en espérant que ça servira un jour ou l’autre.

Albuu - 2 décembre 2008

Merci pour cette astuce qui vient de me rendre un bien grand service et m’épargne ainsi de longues heures de travail inutiles !!

Laisser un commentaire

Commentaire