2009-09-16 16 views
0

Fondamentalement, la question pourrait probablement être plus précisément posée, comment puis-je simplement désactiver un bouton, puis le réactiver? J'ai essayé de définir buttonMode sur false, mouseChildren sur false et activé sur false. Rien ne fonctionne. Je me rends compte il suffit de supprimer les écouteurs d'événements, mais il y a sûrement un moyen plus élégant et plus efficace. En supprimant l'événement, les auditeurs me forceraient à garder une trace des fonctions qui appartiennent à certains états de boutons et à les ajouter et les supprimer encore et encore, ce qui semble maladroit.Comment désactiver et réactiver MouseEvents; buttonMode, mouseChildren et enable ne fonctionnent pas

Existe-t-il un moyen de définir un indicateur qui désactive temporairement les eventListeners qu'un objet peut avoir, puis les rallume simplement? J'étais sous l'idée fausse que l'ajout d'événements rollOver etc .. à un MovieClip le convertit en théorie en un bouton, dans lequel peut être facilement désactivé avec la propriété enabled. De plus, je ne peux pas utiliser SimpleButton, car j'ai besoin de plus de flexibilité.

J'ai créé une classe personnalisée qui gère toutes ces fonctionnalités et simplifie la vie, mais je me demande s'il existe une méthode officielle prête à l'emploi.

Voici un exemple isolé, qui utilise un MovieClip sur la scène avec un nom d'instance de iPoo, où les événements feu toujours, peu importe ce qui sera défini lorsque vous cliquez sur le bouton:

iPoo.addEventListener (MouseEvent. ROLL_OVER, pooRollOver);
iPoo.addEventListener (MouseEvent.ROLL_OUT, pooRollOut);
iPoo.addEventListener (MouseEvent.CLICK, pooClick);

fonction pooRollOver (_event: MouseEvent): void
{

iPoo.alpha = 0.5; 

}

fonction pooRollOut (_event: MouseEvent): void
{

iPoo.alpha = 1; 

}

fonction pooClick (_event: MouseEvent): void
{

trace("Poo"); 

iPoo.enabled = false; 
iPoo.buttonMode = false; 
iPoo.mouseChildren = false; 

}

Répondre

2

Utilisez la propriété mouseEnabled.

mc.mouseEnabled = false; 

de LiveDocs:

Si enabled Si activé est définie sur false, plus, vers le bas, et les cadres vers le haut du clip sont désactivées. Le clip continue à recevoir des événements (par exemple, mouseDown, mouseUp, keyDown et keyUp).

+0

Merci, vraiment apprécier l'aide. Fonctionne parfaitement. Mec, je ne sais pas comment j'ai raté ça, d'autant plus que FlashDevelop a intelense! –

+0

Et si vous avez un objet X. Y est l'enfant de X et Z est l'enfant de X. Vous voulez détecter Y et Z. –

Questions connexes