S'assurer qu'un event dispatché est autorisé

Tags :

Il arrive à tout le monde de faire des erreurs de typo, une majuscule en trop, etc ..

C’est pourquoi, durant les phases de développement, je verifie dans mon CoreEvent, qui est la classe mere d’une bonne part de mes events, que le type d’event qui sera dispatché fait bien partie des constantes autorisées, et que d’autre part, la constante et sa variable String concordent, à l’aide de ce petit bout de code :

package org.nc.core.utils
{
	import flash.events.Event;
	import flash.utils.*;
	
	public final class EventUtils
	{
		private static const maxValue : int = 97; // les majuscules
		
		public static function checkEvent (value:Event) : void
		{
			if (e != null)
			{
				var c : Class = getDefinitionByName(getQualifiedClassName(value)) as Class,
					eventType : String = e.type.charAt(0),
					i : int = 0,
					l : int = type.length;
				while(++i<l)
				{
					if (int(type.charCodeAt(i)) < maxValue) eventType+='_';
					eventType+=e.type.charAt(i);
				}
				eventType = eventType.toUpperCase();
				if (!(c[eventType] == e.type)) 
				{
					throw new Error(getQualifiedClassName(e)+'.'+eventType+' != '+e.type+' or '+e.type+' is not in const values of '+getQualifiedClassName(e));
				}
			}
		}
	}
}

Je m’assure ainsi que un new MyEvent(MyEvent.BIDULE_CHANGED) doit être du genre ( le fonctionnement par defaut de la complétion dans l’ide Flex Builder ) :

public static const BIDULE_CHANGED : String = 'biduleChanged';

Bien sur, en production, j’enleve cette vérification du constructeur de mon event pour des questions de performance.