Créer un bouton flash optimisé - 3/6 - Flash

Posté par Grouuu dans Tutoriels | 19 juin 2009 à 14:17 0

Dans cette troisième partie, nous allons voir comment améliorer le comportement de notre bouton flash.

Nous allons nous servir du bouton flash développé dans l’étape deux.

Nous pouvons remarquer que lorsqu’on survole notre bouton et que nous retirons tout de suite la souris de dessus, l’animation de sortie de survol se déclenche tout de suite sans laisser l’animation de survol se finir. La transition étant tronquée, l’effet d’animation perd en fluidité.

Le but de ce tutoriel va être de faire que l’animation de survol se finisse avant d’enchaîner avec l’animation de sortie de survol si la souris n’est plus présente sur le bouton flash.

Pour se faire, on va utiliser une variable drapeau, flag en anglais.

Le but de cette variable va être de changer d’état selon l’état du bouton, et en testant sa valeur, on pourra déterminer quelles seront les instructions à suivre.
Par exemple, imaginons un interrupteur. Lorsque l’on appuie dessus, la lumière s’allume et si on appuie de nouveau, la lumière s’éteint.

On peut imaginer qu’une variable nommée flag, de type boolean (false/true), définisse l’état de l’interrupteur. Lorsque la lumière est allumée, la variable flag a comme valeur true, lorsque la lumière est éteinte, sa valeur passe sur false.

On peut traduire ça de cette façon :

  • je définie ma variable flag par défaut sur false : la lumière est par défaut éteinte
  • si j’appuie sur le bouton, la variable flag prend comme valeur true et la lumière s’allume
  • si j’appuie de nouveau sur le bouton, la variable flag prend comme valeur false et la lumière s’éteint

Traduit en code ça donne :

var flag:Boolean = false;
bt_interrupteur.onRelease = function():Void{
if(flag){
// la lumière s'éteind
flag = false;
}else{
// la lumière s'allume
flag = true;
}
};

Dans notre cas, il s’agit d’adapter ce principe aux évènements onRollOver et onRollOut.

Une variable drapeau va servir à déterminer si la souris est sortie de dessus du bouton pendant l’animation de survol du bouton flash.

Mais afin de mettre à jour notre flag, il faut déterminer si nous sommes en train d’afficher l’animation de survol ou celle de sortie de survol. En effet, pour que le gestionnaire de sortie de survol puisse ne pas se déclencher lorsqu’il est appelé pendant l’animation de survol MAIS qu’il se lance lorsque cette animation est finie, il faut créer une seconde variable drapeau qui testera si l’animation de survol est en cours ou pas.

Position Sortie d’anim anticipée Anim de survol en cours
Au repos false false
Survol false true
Sortie anticipée true true
Sortie normale false false

Traduit en code :

// référence au bouton
var bouton:MovieClip = this.bt_exemple;
// détermine si on est sorti du survol du bouton pendant l'animation de survol
bouton.sortie = false;
// détermine si une animation de survol est en cours
bouton.anim = false;
// gestion du survol
bouton.onRollOver = function():Void {
// lance l'animation de survol
this.gotoAndPlay("ON");
// réinitialise la variable drapeau
this.sortie = false;
// déclare l'animation de survol en cours
this.anim = true;
};
// gestion de la sortie du survol
bouton.onRollOut = function():Void {
// si la souris n'est pas sortie du bouton pendant l'animation de survol ET que l'animation de survol n'est plus en cours
if ((!this.sortie) && (!this.anim)) {
// lance l'animation de sortie de survol
this.gotoAndPlay("OFF");
} else if (this.anim) {
// si l'animation de survol est en cours, on déclare que l'animation de survol doit directement enchaîner avec celle de sortie de survol
this.sortie = true;
}
};
// gestion du clic (déclenchement au relâché)
bouton.onRelease = function():Void {
// ouvre dans une nouvelle page le lien renseigné
getURL("index.htm", "_self");
};

Et voilà le résultat !

Partager:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BlinkList
  • blogmarks
  • De.lirio.us
  • Design Float
  • LinkedIn
  • Netvouz
  • StumbleUpon
  • Technorati

Pas de commentaires

pour “Créer un bouton flash optimisé - 3/6 - Flash”

Envoyer un commentaire

Vous devez être connecté pour envoyer un commentaire.