~ \ blog

Lilou, bientôt 2 ans

Lilou

ça passe tellement vite.

→ Read more...

Tags :
· 2008/08/17 23:07 · 1 Comment

Compilation d'AS3 en AS3

J’ai découvert il y a quelques temps deja, un petit framework contenant une partie du code de tamarin, dans ces premiers commits, et qui permet donc de compiler de l’AS3 avec le Flash Player, moyennant quelques adaptations d’écritures, et quelques issues à connaitre.

L’idée, c’est que l’application cliente ne dispose que des interfaces des classes, pour qu’en cas de décompilation, les classes critiques ne puissent être obtenues.

Applications

→ Read more...

Tags :
· 2008/06/17 22:17 · 4 Comments

Les Enums en AS3

Il existe différentes implémentations possibles concernant les Enums en AS3, avec inconvenients et avantages.

Pour ma part, j’ai besoin de garder la possibilité de transférer cet Enum via une LocalConnection, ou de le garder dans un SharedObject, c’est primordial. Donc, dans mon cas, j’ai autorisé l’instanciation de ma classe Enum, pour pouvoir ensuite faire un toEnum dessus et recupérer la constante voulue, cependant comme vous allez le voir, c’est facile à changer.

J’ai volontairement déplacer une constante sous le constructeur, pour vous montrer que cela n’a aucun rapport avec le systeme d’Enum qui se sert de code en ligne durant la compilation de classe pour lancer une erreur dans le constructeur à un certain moment.

La Classe MyEnum

→ Read more...

Tags : ,
· 2008/06/17 00:55 · 0 Comments

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

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.

→ Read more...

Séparer ses composants des modèles

Il est souvent fastidieux de devoir utiliser des [Bindable(’eventName’)] et accesseurs tout le long de la liste d’affichage pour que le composant perdu tout au fond de la celle-çi puisse avoir accés à un modèle se trouvant dans Application.application ou ailleurs.

Personnellement, j’utilise une autre méthode pour me liberer complètement de la position de mon composant dans l’affichage.

En effet, il existe une propriété méconnue dans LoaderInfo : sharedEvents. C’est un EventDispatcher unique qui est partagé par le swf courant et tout les swfs enfants qu’il va charger.

Exemple

→ Read more...

Tags :
· 2008/06/16 11:58 · 0 Comments

Older entries >>