Bonjour,

Je réalise actuellement une bannière en flash, j'aimerait que celle-ci tourne en boucle.

Pas de problèmes me direz-vous, de base elle devrait tourner en boucle tout seule.

Mais la toute mon animation est basée sur une seule image clé, dans mon calque "actions" en as3 et TweenMax.

J'ai pensé à ne rien mettre : négatif
J'ai pensé à "gotoAndPlay(1);" à la fin de mon animation -> négatif

Me voilà embêté..

Si quelqu'un à une petit idée de la solution, je suis preneur !

Merci bien

Version du logiciel : Flash CS3 - Codage : en AS3

Code :


bt_btn.addEventListener(MouseEvent.CLICK,allervers);

function allervers(me:MouseEvent):void {
navigateToURL(new URLRequest("http://www.bouyguestelecom.fr/"),"_blank"); }

/* --- --- --- --- --- --- --- --- --- --- --- --- */
import com.greensock.*;
import com.greensock.easing.*;

t1_txt.alpha=0;
t2_txt.alpha=0;
t3_txt.alpha=0;

samsung_mc.scaleX=0;
samsung_mc.scaleY=0;

puce_mc.scaleX=0;
puce_mc.scaleY=0;
puce2_mc.scaleX=0;
puce2_mc.scaleY=0;

bt2_mc.alpha=0;



/* --- --- --- --- --- --- --- --- --- --- --- --- */

TweenMax.to(t1_txt,1,{alpha:1, onComplete: t1off});

function t1off():void{
TweenMax.to(t1_txt,1.3,{alpha:0, onComplete: t2});
	}

function t2():void{
TweenMax.to(t2_txt,0.6,{alpha:1, x:150, blurFilter:{blurX:10, remove:true}, onComplete: samsung});	
	}

function samsung():void{
TweenMax.to(samsung_mc,0.5,{ x:70, scaleX:1, scaleY:1, motionBlur:true, onComplete: t3});	
	}

function t3():void{
TweenMax.to(t3_txt,1,{ alpha:1, onComplete: puce});
	}

function puce():void{
TweenMax.to(puce_mc,0.2,{ scaleX:1, scaleY:1, motionBlur:true, onComplete: timeoff });
	}

function timeoff():void{
TweenMax.to(timeoff_mc,1,{onComplete: t3off});
	}

function t3off():void{
TweenMax.to(t3_txt,0.5,{ alpha:0, onComplete: puceoff});	
	}

function puceoff():void{
TweenMax.to(puce_mc,0.5,{ scaleX:0, scaleY:0, motionBlur:true, ease:Back.easeIn, onComplete: port});	
	}

function port():void{
TweenMax.to(samsung_mc,0.5,{ x:55, motionBlur:true, onComplete: puce2});	
	}

function puce2():void{
TweenMax.to(puce2_mc,1,{scaleX:1, scaleY:1, ease:Bounce.easeOut, motionBlur:true, onComplete: timeoff2});	
	}

function timeoff2():void{
TweenMax.to(timeoff_mc,1,{onComplete: puce2off});
	}

function puce2off():void{
TweenMax.to(puce2_mc,0.5,{ scaleX:0, scaleY:0, ease:Back.easeIn, onComplete: final});
	}

function final():void{
TweenMax.to(samsung_mc,0.5,{ x:80, y:135, scaleX:1.1, scaleY:1.1, onComplete: bt});
	}
	
function bt():void {
TweenMax.to(bt2_mc,2,{ alpha:1});	
}

/* gotoAndPlay(1);	*/

Modifié par creart (29 Nov 2010 - 13:59)
Salut creart

Quoique je n'utilise jamais les tween's, préférant écrire mes animations, je ne suis donc pas sûre de ma réponse. Il me faudrait voir tes scripts (packages et classes) pour mieux voir la situation.

Toutefois comme une fonction appelle une autre fonction avec « onComplete: nomFonction », tu pourras placer un retour à la première fonction « t1off », à ta dernière fonction « bt ( ) »

Comme ceci : TweenMax.to( bt2_mc, 2,{ alpha:1, onComplete: t1off } ); // on recommence au début.

Bon d'accord que tu as un texte avant, « t1_txt », mais qui n'est pas une fonction, ce sera donc à toi de déterminer où débute ton animation. L'important est de joindre ta dernière fonction à la première.

Essais le si tu veux et tiens moi au courant s.v.p. Smiley cligne

Pour ma part je préfère de loin utilisé l'objet « Timer », qui m'est beaucoup plus familier.
L'objet « Timer » peut exécuté un nombre de fois des fonctions ou des méthodes de classes.

Particulièrement intéressant pour les bannières publicitaires et les sliders (diaporama), qui tourneront en boucle, aussi pour les Lecteurs vidéo et/ou audio, ainsi que tous les projets qui s'alimentent à partir de fichiers XML.

++
Modifié par zardoz (30 Nov 2010 - 05:11)
EDIT : Effectivement en placant "onComplete: t1off" cela relance mon animation, c'est tellement évident que je n'y ait pas pensé !

Cependant les derniers éléments en alpha:1 présent dans mes tweens subsistent, même lorsque ceux-ci sont en alpha:0 de base.

Je doit donc refaire des lignes pour les passer en alpha:0 et ensuite relancer l'animation!

Mais ça marche Smiley cligne

Merci Smiley smile
Modifié par creart (29 Nov 2010 - 14:00)
Hello

Alors c'est bien : en effet il se peut qu'un certain ajustement sois essentielle.

Pour un contrôle plus fin il est préférable d'utilisé la classe « Timer » et les évènements.
Comme « Event.ENTER_FRAME », qui nous permet d'écrire des animations, des mouvements de toutes sortes, en utilisant les propriétés de la classe « MovieClip ».

D'autres évènements te permettrons un contrôle sur ce qui se passe en interne comme « Event.COMPLETE » ou encore « Event.INIT ». Et plusieurs autres évidemment.

Joint à la classe Math avec les méthodes .sin ( ) ou .cos ( ) qui autorise toutes les directions des objets en déplacement. Gérer la vitesse, l'accélération ou la décélération, voire même la friction et la fluidité. Souvent utile pour les scripts de jeux, mais très utile aussi pour les bannières.

Joint aussi aux filtres qui permet des effets visuels intéressants, « Blur », « DropShadow » et plusieurs autres encore.

Je te suggère donc ces classes pour un contrôle plus pointu des tes projets en animation.
Comme apprentissage, rien de mieux que les scripts de jeux. Même si les jeux n'est pas nécessairement nos objectifs. Ceux-ci permet un apprentissage profond sur les classes utiles aux mouvements des objets.

C'est sûr que je ne peux tout dire en un seul topic mais une approche de la documentation (Adobe) en fr, nous donne une vue complète (souvent basic), et des exercices pour une meilleur compréhension.

Bonne continuation Smiley smile

++
Modifié par zardoz (29 Nov 2010 - 21:05)
Merci pour ces précieuses informations,

J'avait déjà en vue effectivement de suivre des exercices pour réaliser des "mini jeux", afin de mieux approfondir mes connaissances en action script, assez limités (mis à part TweenMax de Greensock)

Je me pencherais dessus un de ces week-end !

Merci et à la prochaine ! Smiley smile
Salut creart

J'ai hésiter : je ne savais plus comment rendre l'info.
Je te donne une adresse annuler d'un objet Timer. Celui-ci gère un objet fixe avec une position « y » différente à chaque exécution. Ce en quoi il n'y a pas d'animation. La courte réaction n'est qu'une illusion.

J'aimerais juste dire une chose ici, à l'adresse ci-haut mentionné, il ne s'agit pas d'une animation. L'objet Timer ne gère que l'exécution d'un objet fixe. Je peux l'écrire différemment. Poussez davantage le script.

La courte animation (si animation il y a), est gérer par l'objet Timer.
Cependant l'objet Timer ne gère que deux choses : Le temps d'exécution et le nombre de fois.

Celui-ci exécute nombre de fois un objet fixe (je dis bien fixe) : 29 fois à 62.5 millisecondes d'intervalle. L'objet Timer exécute une méthode de classe perso (29 fois). C'est un masque qui est exécuté ici. J'ai l'intention de faire un tuto sur le sujet. Disons que c'est mon but. Plus avancé en localhost. Je te le jure.

Le temps a un lien avec la vitesse d'exécution (62.5:rapide). En dehors de ce temps l'animation ne vaut plus. En dehors de ce temps il n'y a plus d'intérêt. En dehors de ce temps, l'animation perd en valeur.

Disons que c'est un tuto en progression Smiley biggrin celui-ci n'est qu'un template, une maquette, un croquis. C'est la première phase. Celui-ci semble banale en exécution mais je contrôle tous les ressources (c'est optimiser). L'utilisation des ressources est contrôler ici. Les évènementielles sont détruit à la fin de cette courte excécution.

Je te dit ces choses creart parce que l'écriture Flash se doit d'être perso. N'utilise pas des packages et des classes propriétaires. Parce que tu manquerais le meilleur en écriture de script.

Et le meilleur c'est toi. Toi et tes idées. Toi et ton écriture.

++
Modifié par zardoz (28 Jun 2011 - 21:29)