Flex Effect: Effets personnalisés, définir une classe Effect Factory (fabrique)
Toutes les classes EffectFactory doient hériter de la classe mx.effects.Effect. Pour cette sous-classe d'Effect, vous devez override les méthodes getAffectedProperties() et initInstance(), et vous devez assigner une référence à la propriété instanceClass.
La méthode getAffectedProperties() doit accepter un paramètre de type EffectInstance. Elle doit toujours appeler super.initInstance(), et elle doit fixer les propriétés nécessaires de l'instance. Par exemple, si vous voulez passer des paramètres de la factory à l'instance, vous devez le faire dans la méthode initInstance().
La propriété instanceClass est une propriété héritée de Effect qui détermine quelle classe est utilisée par la fabrique pour créer des instances. Vous devez fixer la propriété instanceClass. Typiquement, vous devez le faire dans le constructeur.
Flex Effect: Effets personnalisés, définir une classe EffectInstance
La classe EffectInstance est celle utilisée comme gabarit pour les objets auquels on applique un effet. Vous ne créez pas directement des instances de cette classe, normalement. Cette action est prise en charge par la fabrique (factory). Par exemple, lorsque vous utilisez un effet Move, l'objet effet qui est réellement appliqué au composant est de type MoveInstance. Tipiquement, vous ne créez pas directement des objets MoveInstance. Au lieu de cela, l'instance est créee automatiquement par la fabrique. Voyons maintenant comme créer une class EffectInstance.
Toutes les classes EffectInstance doivent hériter de mx.effects.EffectInstance, et au minimum, toutes les sous-classes de EffectInstance doivent override la méthode play() et cette méthode doit aussi appeler la méthode super.play(). De plus, les classes EffectInstance doivent avoir un constructeur acceptant un paramètre de type Object. Ce paramètre est la cible de l'effet qui sera automatiquement passé au constructeur quand il est appelé par la fabrique. Le constructeur doit appeler super() et passer le paramètre.
L'exemple suivant place simplement un point rouge dans le coin haut droit d'un composant.
Flex Effect: Animation Easing Personalisée (easingFunction) et exemple
Pour tous les effets Tween (blur, move, fade, glow, …), vous pouvez contrôler l'easing (assouplissement) qui lui est appliqué. Le terme easing correspond à la vitesse à laquelle l'effet est appliqué. La valeur par défaut du type d'easing est Linear, ce qui veut dire que l'effet est appliqué à une cadence fixe du début à la fin. Cependant, vous pouvez appliquer des effets dans un style non linéaire. Vous pouvez appliquer un easing personalisé en utilisant la propriété easingFunction.
La propriété easingFunction vous permet d'assigner une référence vers une fonction qui va accepter 4 paramètres numériques (temps de lecture, valeur initiale, nombre de changements de valeurs et durée de l'effet) et qui retourne la nouvelle valeur à utiliser. L'effet appele ensuite la fonction automatiquement chaque fois qu'il a besoin de mettre à jour la valeur de la propriété pour le composant cible. Bien que vous pouviez créer vos propres easing functions, vous trouverez surement plus simple d'essayer une des nombreuses fonctions d'easing qui sont inclues dans le package mx.effects.easing du Framework Flex.
Flex Effect: Animation des effets (Pause, Resume, Reverse, Delay et Repeat)
Effect: Pause, Resume et Reverse en AS3
Par défaut, les effets se jouent de manière normale. Cependant, vous pouvez les mettre en pause, les faire repartir et même inverser un effet. Tous les effets ont une méthode pause() et resume() qui met en pause et reprend la lecture d'un effet, respectivement.
Vous pouvez inverser la lecture d'un effet en utilisant la méthode reverse(). Si vous appelez la méthode reverse() alors qu'un effet est en cours de lecture, cela l'inversera depuis ce point et le lira en arrière jusqu'au début. Si l'effet n'était pas en lecture, appeler la méthode reverse() ne va pas jouer l'effet mais va le configurer de telle manière que la prochaine fois que l'effet sera déclenché, il sera lu à l'envers.
Retarder et Répéter les effets
Quand vous voulez retarder un effet, vous avez plusieurs options, selon ce que vous essayez de faire. Si vous voulez jouer un effet en attendant qu'un événement utilisateur ou système se déclenche, vous devriez associer l'effet avec le trigger qui correspond ou vous devriez appeler la méthode play() d'un effet en réponse à un événement. Si vous voulez ajouter un retard précis avant que l'effet ne commences après qu'il ait été déclenché ou lu, vous pouvez spécifier une valeur pour la propriété startDelay d'un effet. La propriété startDelay vous permet de spécifier combien de millisecondes l'effet va être mis en pause avant que sa lecture ne commence. La valeur par défaut est de 0, ce qui veut dire qu'il n'y a aucun retard. L'exemple suivant crée un effet Fade et le retarder de 1000 ms:





