Comment désactiver et réactiver les événements de souris; buttonMode, mouse Les enfants et les activer ne fonctionnent pas

StackOverflow https://stackoverflow.com/questions/1431647

Question

En gros, la question pourrait être plus probablement posée avec précision, 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é à false. Rien ne fonctionne. Je me rends compte que je pourrais retirer les écouteurs de l'événement, mais il existe sûrement un moyen plus élégant et plus efficace. En supprimant l'événement, les auditeurs me forceraient à garder trace des fonctions propres à certains états des boutons et à les ajouter et les supprimer encore et encore, ce qui semble maladroit.

Existe-t-il un moyen de définir un indicateur permettant de désactiver temporairement tous les eventListeners qu'un objet pourrait avoir, puis de les réactiver? Je pensais à tort que l’ajout d’événements rollOver, etc. à un MovieClip le convertit en théorie en un bouton pouvant être facilement désactivé avec la propriété enabled. De plus, je ne peux pas utiliser SimpleButton, car j’ai besoin de plus de souplesse que ce qu’il me procure.

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 un moyen officiel prêt à l'emploi.

Ci-dessous, un exemple isolé, qui utilise un MovieClip sur la scène avec le nom d’instance iPoo, où les événements sont toujours déclenchés, quel que soit le paramètre 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);

function pooRollOver (_event: MouseEvent): void
{

iPoo.alpha = 0.5;  

}

function pooRollOut (_event: MouseEvent): void
{

iPoo.alpha = 1;  

}

function pooClick (_event: MouseEvent): void
{

trace("Poo");  

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

}

Était-ce utile?

La solution

Utilisez la propriété mouseEnabled .

mc.mouseEnabled = false;

à partir de livesocs:

  

Si activé , le cas échéant Si la valeur est définie sur false, les images Par dessus, Bas et Haut du clip sont désactivées. Le clip continue de recevoir des événements (par exemple, mouseDown, mouseUp, keyDown et keyUp).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top