[AS2->AS3] Désactiver un MovieClip avec enabled
22 novembre 2007 – 0:15Cet après-midi, je me suis rendu compte que la propriété enabled d'un movieclip ne fonctionnait plus comme en AS2. Pour ceux qui ont essayé, vous aurez constaté que le bouton/movieclip continue à exécuter des instructions au clique. Plus précisément il continue d'écouter des MouseEvent.
Pour l'exemple, créer un symbole movieclip sur la scène, nommé le "mc" et taper ceci dans les actions :
mc.buttonMode = true; mc.addEventListener(MouseEvent.CLICK, mcOnClick); function mcOnClick(e:Event):void{ mc.enabled = false; trace("click"); }
D'après la documentation, enabled existe toujours, cependant il n'agit que sur les différents états d'un bouton. Si votre bouton ou movieclip contient une frame up, over, down et bien le enabled=false désactivera ces différents états, mais la cible continuera d'écouter un MouseEvent.CLICK
La solution existe déjà, nous avons deux nouvelles propriétés "mouseEnabled" et "mouseChildren". Pour notre exemple, mouseEnabled suffira à régler le problème. Il suffit de remplacer
mc.enabled = false;
par
mc.mouseEnabled = false;
Maintenant notre mc est vraiment désactivé, comme on le faisait en AS2 avec enabled.
Attention ce n'est pas fini. Imaginons que notre mc contient un autre symbole movieclip. En AS2, une fois le movieclip parent désactivé, les movieclip enfants l'étaient aussi. Mais pas en AS3, il faut utiliser la méthode mouseChildren pour désactiver les movieclip enfants. Dans ce cas vous devrez ajouter la ligne suivante :
mc.mouseChildren = false;
Ceci désactivera les écouteurs (MouseEvent) des enfants.

11 Responses to “[AS2->AS3] Désactiver un MovieClip avec enabled”
Merci =)
By Antoine SCHIRER on mar 5, 2008
Gracias!!!!
By ussparasunki on avr 20, 2008
That’s really a great help.
Thanks
By theovspra on nov 6, 2008
merci !!
By supavice on mar 30, 2009
euuu… en même temps on vas dire que j’abuse mais ce n’est pas exactement le même qu’en AS2 ^^
si j’ai un autre bouton en dessous de celui que je viens de désactiver avec mouseEnabled il n’est toujours pas cliquable… En AS2 enabled rendait ce premier clip complètement inactif et permettait de rendre cliquable un clip situé en dessous …
non ?
quel peut être la solution alors ?
By supavice on mar 30, 2009
Bon alors si j’ai bien compri…
il n’y as aucun équivalent a mc.enabled=false(AS2)
puisque le mc.MouseEnabled=false ne permet pas de cliqé en dessous de ce movieClip =/
:’(
By supavice on avr 1, 2009
Tu as testé ce que tu dis ?
Parce qu’il me semble que c’est incorrecte.
En AS 2 c’est impossible d’avoir un bouton dans un bouton pour le simple fait que si tu as un événement « onRelease » sur ton mc_1, tu ne pourras plus activer le bouton mc_2 qui se trouve dans mc_1.
De même si tu utilises mc_1.enabled = false; Ton mc_2 sera toujours inactif étant donné qu’il est dans le mc_1.
En AS 3, mc_1.mouseChildren = false; désactivera les enfants, mais pas le mc_1, sauf si tu ajoutes mc_1.mouseEnabled = false;
Tu peux aussi utiliser les exemples de la doc.
By Sakana on avr 1, 2009
Merci beaucoup !
By Hirschi on avr 28, 2009
merci bcp, tu viens de m’éviter bcp d’arrachage de cheveux
By admirateur on mai 28, 2009
Merci bcp pour l’astuce!
By Mike on août 19, 2009
pouah j’ai cherché en long et en large pour le mouseChildren! merci merci
By krev8 on mar 14, 2010