Cómo deshabilitar y volver a habilitar Eventos de mouse; buttonMode, mouse Children y enable no funcionan

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

Pregunta

Básicamente, la pregunta podría ser más precisa, ¿cómo puedo simplemente deshabilitar un botón y luego volver a habilitarlo? He intentado configurar buttonMode en falso, mouseChildren en falso y habilitado en falso. Nada funciona. Me doy cuenta de que podría simplemente eliminar a los oyentes de eventos, pero seguramente hay una manera más elegante y eficiente. Al eliminar el evento, los oyentes me obligarían a realizar un seguimiento de las funciones relacionadas con ciertos estados de los botones y tener que agregarlos y eliminarlos una y otra vez, lo que parece torpe.

¿Hay alguna manera de establecer un indicador que haga que el dispositivo inhabilite temporalmente cualquier EventListeners que pueda tener un objeto y luego simplemente vuelva a activarlo? Tenía la idea errónea de que agregar eventos rollOver, etc. a un MovieClip lo convierte en teoría en un botón, en el que se puede desactivar fácilmente con la propiedad habilitada. Además, no puedo usar SimpleButton, ya que necesito más flexibilidad de la que proporciona.

He creado una clase personalizada que maneja toda esta funcionalidad y hace la vida más simple, pero me pregunto si existe una forma oficial lista para usar.

A continuación se muestra un ejemplo aislado, que utiliza un MovieClip en el escenario con un nombre de instancia de iPoo, donde los eventos siempre se activan independientemente de lo que se configura cuando hace clic en el botón:

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

función pooRollOver (_event: MouseEvent): void
{

iPoo.alpha = 0.5;  

}

función pooRollOut (_event: MouseEvent): void
{

iPoo.alpha = 1;  

}

función pooClick (_event: MouseEvent): void
{

trace("Poo");  

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

}

¿Fue útil?

Solución

Utilice la propiedad mouseEnabled .

mc.mouseEnabled = false;

de livedocs:

  

Si habilitado si está habilitado Si se establece en falso, los fotogramas Over, Down y Up del clip de película están deshabilitados. El clip de película continúa recibiendo eventos (por ejemplo, mouseDown, mouseUp, keyDown y keyUp).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top