Rendre un clip progressivement transparent avec AS3

Rendre un clip progressivement transparent avec AS3 - Flash/ActionScript - Programmation

Marsh Posté le 06-07-2007 à 16:18:18    

Bonjour à tous,
 
Je me suis lancé sur Flash CS3 Pro et Action Script 3, j'ai déjà visionné quelques tutoriaux sur l'AS3.
 
Voici la situation : j'ai un bouton (qui a pour nom d'occurence "bouton" ). Lorsque la souris le survole, ça lance la lecture d'un clip. Ce clip a pour nom d'occurence "animation", il contient une simple interpolation de forme qui s'achève par un stop();
Jusque là tout fonctionne (voir code ci-dessous).
 
Voici mon problème : lorsque la souris sort du survol du bouton, je souhaiterai que le clip "animation" disparaisse progressivement (jusqu'à Alpha = 0%).
Quelle fonction faut-il employer pour diminuer progressivement la valeur alpha du clip ?
 
Merci d'éclairer ma lanterne à ce sujet svp...
Pierre
 
Voici le code AS3:
 
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.IEventDispatcher;
 
animation.stop();
 
bouton.addEventListener(MouseEvent.MOUSE_OVER,début_animation);
function début_animation(e:MouseEvent):void {
 animation.play();
}
//jusque là ça fonctionne !
 
bouton.addEventListener(MouseEvent.MOUSE_OUT,disparition_animation);
function disparition_animation(e:MouseEvent):void {
c'est ici qu'il me manque la fonction pour diminuer progressivement la valeur alpha du clip "animation"
}

Reply

Marsh Posté le 06-07-2007 à 16:18:18   

Reply

Marsh Posté le 06-07-2007 à 17:26:14    

animation.addEventListener(Event.ENTER_FRAME, truc);
function truc(event){
if(animation.alpha == 0){
animation.removeEventListener(Event.ENTER_FRAME, truc);
}else{
animation.alpha -= 1;
}
}

 


ca doit être un truc comme ça ...
Mais ça c'est l'ancienne méthode, y'a surement des trucs plus adapté dans la classe Transition.
regarde peut être par là ...


Message édité par Zedlefou le 06-07-2007 à 17:26:42

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 06-07-2007 à 17:59:23    

Merci Zed, j'ai essayé de combiner ce que tu m'as indiqué avec mon code existant... mais j'avance un peu en aveugle. Effectivement je pensais utiliser une boucle avec condition, mais c'est l'histoire du "EnterFrame" qui me pose soucis... je continue de chercher sur d'autres forums une technique similaire... encore merci pour ta rapidité. Bye
Peer

Reply

Marsh Posté le 14-07-2007 à 18:17:34    

Au lieu de enterFrame utilise setInterval et une fonction associée au clip

Reply

Marsh Posté le 14-07-2007 à 19:10:45    

en AS3 vaut mieu faire un Timer


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 14-07-2007 à 19:21:00    

Je ne connais pas l'AS3 mais je sais que setInterval est une sorte de timer. Sinon pourquoi "vaut mieux"? ça explose sinon lol

Reply

Marsh Posté le 14-07-2007 à 19:22:38    

Ca vient de la doc de Flash :
"Although you can use this method, it will generate a compiler warning. Instead of using the setInterval() method, consider creating a Timer object"


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 14-07-2007 à 20:05:40    

Bon, un warning c'est pas trop grave pour le moment.. Et plus tard ça devriendra une méthode obsolète.

Reply

Marsh Posté le 15-07-2007 à 11:15:57    

le framerate d'un swf est dépendant du client (hardware/software) qui la joue. Utiliser un EnterFrame pour animer, c'est la pire des méthodes : ton anim ne se jouera jamais de manière identique sur tous les clients. Un SetInterval/Timer peut aller, mais peut aussi ralentir toute ton animation en surchargeant le framerate...C'est pour ça qu' il existe des moteurs d'animation procédurale ( mx.transitions.Tween , FuseKit , ... ). Il en existe peu en AS3...


---------------
"Il y a vraiment aucun patelin qui s'appelle 'undefined' en France ?"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed