Ecouter tous les flexevent dispatchés sur un élément

Contenu du snippet

Il m'est souvent arrivé de me demander quel évènement écouter quand je manipule un élément dans Flex pour faire la bonne action au bon moment. J'ai créé, pour ne plus chercher, une fonction statique qui ajoute un listener à l'élément passé en paramètre pour chaque type de FlexEvent, et une fonction pour afficher les évènements quand ils sont appelés.

Source / Exemple :


public class UIUtil
{
        //*********************************************************************************************
	public function UIUtil()
	{
	}

        //*********************************************************************************************
	/**

  • Trace tous les évènements de type FlexEvent sur l'élément passé en paramètre. A utiliser pour
  • débugger ou coder mais pas dans dans le fonctionnement de l'application.
  • /
public static function testFlexEvents(theElement:IEventDispatcher):void { theElement.addEventListener(FlexEvent.ADD, tracer); theElement.addEventListener(FlexEvent.ADD_FOCUS_MANAGER, tracer); theElement.addEventListener(FlexEvent.APPLICATION_COMPLETE, tracer); theElement.addEventListener(FlexEvent.BACK_KEY_PRESSED, tracer); theElement.addEventListener(FlexEvent.BUTTON_DOWN, tracer); theElement.addEventListener(FlexEvent.CHANGE_END, tracer); theElement.addEventListener(FlexEvent.CHANGE_START, tracer); theElement.addEventListener(FlexEvent.CHANGING, tracer); theElement.addEventListener(FlexEvent.CONTENT_CREATION_COMPLETE, tracer); theElement.addEventListener(FlexEvent.CREATION_COMPLETE, tracer); theElement.addEventListener(FlexEvent.CURSOR_UPDATE, tracer); theElement.addEventListener(FlexEvent.DATA_CHANGE, tracer); theElement.addEventListener(FlexEvent.ENTER, tracer); theElement.addEventListener(FlexEvent.ENTER_FRAME, tracer); theElement.addEventListener(FlexEvent.ENTER_STATE, tracer); theElement.addEventListener(FlexEvent.EXIT_STATE, tracer); theElement.addEventListener(FlexEvent.FLEX_WINDOW_ACTIVATE, tracer); theElement.addEventListener(FlexEvent.FLEX_WINDOW_DEACTIVATE, tracer); theElement.addEventListener(FlexEvent.HIDE, tracer); theElement.addEventListener(FlexEvent.IDLE, tracer); theElement.addEventListener(FlexEvent.INIT_COMPLETE, tracer); theElement.addEventListener(FlexEvent.INIT_PROGRESS, tracer); theElement.addEventListener(FlexEvent.INITIALIZE, tracer); theElement.addEventListener(FlexEvent.INVALID, tracer); theElement.addEventListener(FlexEvent.LOADING, tracer); theElement.addEventListener(FlexEvent.MENU_KEY_PRESSED, tracer); theElement.addEventListener(FlexEvent.MUTED_CHANGE, tracer); theElement.addEventListener(FlexEvent.NAVIGATOR_STATE_LOADING, tracer); theElement.addEventListener(FlexEvent.NAVIGATOR_STATE_SAVING, tracer); theElement.addEventListener(FlexEvent.NEW_CHILD_APPLICATION, tracer); theElement.addEventListener(FlexEvent.PREINITIALIZE, tracer); theElement.addEventListener(FlexEvent.PRELOADER_DOC_FRAME_READY, tracer); theElement.addEventListener(FlexEvent.PRELOADER_DONE, tracer); theElement.addEventListener(FlexEvent.READY, tracer); theElement.addEventListener(FlexEvent.REMOVE, tracer); theElement.addEventListener(FlexEvent.RENDER, tracer); theElement.addEventListener(FlexEvent.REPEAT, tracer); theElement.addEventListener(FlexEvent.REPEAT_END, tracer); theElement.addEventListener(FlexEvent.REPEAT_START, tracer); theElement.addEventListener(FlexEvent.SELECTION_CHANGE, tracer); theElement.addEventListener(FlexEvent.SHOW, tracer); theElement.addEventListener(FlexEvent.STATE_CHANGE_COMPLETE, tracer); theElement.addEventListener(FlexEvent.STATE_CHANGE_INTERRUPTED, tracer); theElement.addEventListener(FlexEvent.TRANSFORM_CHANGE, tracer); theElement.addEventListener(FlexEvent.TRANSITION_END, tracer); theElement.addEventListener(FlexEvent.TRANSITION_START, tracer); theElement.addEventListener(FlexEvent.UPDATE_COMPLETE, tracer); theElement.addEventListener(FlexEvent.URL_CHANGED, tracer); theElement.addEventListener(FlexEvent.VALID, tracer); theElement.addEventListener(FlexEvent.VALUE_COMMIT, tracer); } //********************************************************************************************* public static function tracer(theEvent:Event):void { var target:String = theEvent.currentTarget.toString(); trace('EVENT TARGET : ' + target.substring(target.length - 20, target.length -1) + '. EVENT TYPE : ' + theEvent.type); } } }

Conclusion :


J'ai scindé volontairement le toString de l'objet suivi pour éviter des logs trop conséquents.

En espérant que cela puisse servir à certains d'entre vous !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.