cs_Yode
Messages postés30Date d'inscriptionlundi 24 mars 2003StatutMembreDernière intervention25 avril 2009
-
24 avril 2009 à 19:10
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 2009
-
24 avril 2009 à 21:32
Bonjour,
J'ai décidé de tenter de faire (enfin!) une animation sans utiliser la timeline de Flash.
Premier obstacle : je veux faire apparaître les éléments de la page l'un après l'autre. Pour cela donc, bien entendu, je me tourne naturellement vers les timers. Voilà donc la forme que commence à prendre le script :
=================================
function intro() { // on lance juste cette fonction qui va créer les différents timers
var logoTimer:Timer=new Timer(1000,1); // premier timer qui lance des anims au bout d'1s
logoTimer.addEventListener("timer", e_logoIn);
logoTimer.start();
var homeTimer:Timer=new Timer(2000,1);// second timer qui lance des anims au bout de 2s
homeTimer.addEventListener("timer", e_homeIn);
homeTimer.start();
var produitTimer:Timer=new Timer(4000,1);// troisième timer qui lance des anims au bout de 4s
produitTimer.addEventListener("timer", e_produitIn);
produitTimer.start();
}
function e_logoIn(e:Event):void {//apparition des premiers éléments
var introLogo:Tween=new Tween(fondLogo,"alpha",Regular.easeOut,0,1,2,true);
var introFondGris:Tween=new Tween(fondGris,"alpha",Regular.easeOut,0,1,1,true);
var introFondCourbes:Tween=new Tween(fondCourbes,"alpha",Regular.easeOut,0,1,5,true);
}
function e_homeIn(e:Event):void {// etc...
var introModele:Tween=new Tween(homeModele,"alpha",Regular.easeOut,0,1,2,true);
var introTitre:Tween=new Tween(homeTitre,"alpha",Regular.easeOut,0,1,3,true);
var introBaseline:Tween=new Tween(homeBase,"alpha",Regular.easeOut,0,1,4,true);
}
function e_produitIn(e:Event):void {// etc.....
var introProduit:Tween=new Tween(homeSt70,"alpha",Regular.easeOut,0,1,3,true);
var introDecouvrez:Tween=new Tween(btn_decouvrez,"alpha",Regular.easeOut,0,1,5,true);
}
=============================
J'ai donc fini par me demander si il n'y avait pas moyen de définir une fonction permettant de faciliter la rédaction et d'alleger le code.
Je suis donc parti sur ce code, qui ne fonctionne évidemment pas du tout, je vous mets même pas la tonne d'erreurs que Flash me sort en export (sauf si vous y tenez mais je pense que pour les codeurs chevronnés les aberrations vont être évidentes) :
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 24 avril 2009 à 21:08
Bonsoir,
effectivement, ca doit générer un paquet d'erreurs :o)
function createTimer(timerName:String,speed:uint,repeat:uint,fonction:String):void {
timerName:Timer=new Timer(speed,repeat); // tu ne peux pas creer une variable a partir d'une variable...
timerName.addEventListener("timer", fonction); fonction doit être... une fonction et tu lui transmet une chaine de caractères
timerName.start();
}
pas sur que cela fonctionne mais part plutot sur quelquechose comme ceci
function createTimer(speed:uint,repeat:uint,callBack:function):void {
var timerName:Timer=new Timer(speed*1000,repeat);
timerName.addEventListener("timer", callBack);
timerName.start();
}
createTimer(4,1,e_logoIn);
se serait sans doute aussi utile de détruire le timer créer une fois le timer terminé... sinon tu va encombrer la mémoire, mais c'est une autre histoire
cs_Yode
Messages postés30Date d'inscriptionlundi 24 mars 2003StatutMembreDernière intervention25 avril 2009 24 avril 2009 à 21:22
Okay, merci bien !
J'ai fait u test rapide avec le code que tu donne, mais ça ne semble pas marcher.
Je suis pour le moment parti sur une solution en mixant l'appel de timers et l'enchainement de tweens avec des fonctions du type de :
introFond.addEventListener(TweenEvent.MOTION_FINISH, e_homeOut);
Mais dès que j'aurai du temps je me replongerai dans ma fonction de génération de timers, j'ai bien envie de tirer ça au clair !
Merci encore pour cette piste, j'ai au moins pu voir à quel point j'étais à côté de la plaque :p
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 24 avril 2009 à 21:32
Bien !
pour info, c'est plutot ceci (utilisation d'un timerEvent
function createTimer(speed:uint,repeat:uint,callBack:function):void {
var timerName:Timer=new Timer(speed*1000,repeat);
timerName.addEventListener(TimerEvent.TIMER, callBack);
timerName.start();
}
et
function e_logoIn(e:TimerEvent=null):void {//apparition des premiers éléments ...}