Tutoriels vidéo art graphique gratuits

 
Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Pages: [1]   En bas

Auteur Sujet: SetInterval+Tweens  (Lu 4769 fois)

fr32c

  • Wisi Addict
  • ***
  • Hors ligne Hors ligne
  • Messages: 125
    • Voir le profil
SetInterval+Tweens
« le: juin 25, 2007, 17:44:27 pm »

Salut tout le monde. Autant sur inD, illustrator et Photoshop qui sont mes jouets quotidiens, tout va bien. Autant sur Flash, que j'ouvre une fois tous les 3 mois, et encore, pour faire de l'anim, ben, ça se complique.

Pour l'instant, je bosse sur ça :
Le fichier swf

Je commence à m'en sortir avec l'animation, mais du coup j'ai d'autres trucs qui déconnent, dans le timing, avec des affichages qui se chevauchent alors que c'était pas le cas quand tout arrivait d'un coup.

Je vous épargne les bouts de code redondants :

D'abord, la fonction qui gère l'alpha avec un tween (j'ai fait ça parce que c'était plus lisible vu que j'ai du mal à itérer) :

function My1AlphTween(qui, duree){
    var tw:Tween = new Tween(qui,"_alpha",Strong.easeOut,qui._alpha,100,duree,true);
}

Puis, la fonction pour masquer (alpha 0) tous les autres clips de l'anim (j'ai remplacé un ._alpha =0 par un autre tween, histoire de voir les autres diminuer doucement, sans succès) :

function setUpAlphaInstancesAlpha() {
   var ttesInstCnt = toutesInstancesAlpha_array.length;
   for (i=0; i      var temp = this[toutesInstancesAlpha_array];
      trace(temp);
      //temp._alpha = 0;
      My0AlphTween(temp, 0.05);
                };
};


Et enfin la fonction posée sur chaque bouton :

function BtnRelease(){
    setUpAlphaInstancesAlpha();
    if (this==_level0.B1) {
        My1AlphTween(FB1,1);
        My1AlphTween(H1,1);
        FB1.play();
        a=setInterval (My1AlphTween, 200, TB1Choix, 1); //idem b, c, d
        setInterval (clearInterval, 250, a);            //idem b, c, d
        }
    else if (this==_level0.B2) {
        MyAlphaTween(FB2,1);
        MyAlphaTween(H2,1);
        FB2.play();
        e=setInterval (MyAlphaTween, 200, TB2Choix, 1); //idem f, g
        setInterval (clearInterval, 1300, e);           //idem f, g ...


D'abord, elle appelle le nettoyage de toutes les instances -> alpha 0
ensuite, pour le bouton 1, on affiche le FB1 (fleche bouton 1), puis le H1 (halo1), puis le TB1Choix (texte du bouton 1)...
idem pour le bouton 2 et les 2 suivants.

Pour les affichages après la flèche, j'ai lancé des setInterval puis clearInterval, sauf que je ne clear pas l'interval en fonction de, mais juste après qu'il soit lancé, déjà, je sais pas si c'est très orthodoxe.

J'ai nommé différement les intervalles, (a,b,c,d, puis e,f...) histoire qu'ils ne se chevauchent pas
Le truc c'est que j'ai besoin d'interrompre les tween en cours qui persistent (et du coup se superposent, évidemment pas dans le bon ordre, ce serait trop simple, parce que bien entendu, tout ça est plein d'alpha à 50% pour faire joli...) Or, je sais pas faire.

Et vu que chaque tween créé s'appelle "tw" j'ai un peu du mal à le renommer autrement pour le tuer individuellement...

On voit les superpositions si on clique sur l'un ou l'autre bouton avant la fin des intervalles et donc des tween en cours...

je continue de chercher en parallèle mais c'est assez frustrant...

Si les gens qui utilisent ça sont délicats, ça ira, mais je n'y crois pas du tout... et surtout, même moi j'attends pas les 3 secondes nécessaires...
Bref, si vous avez une idée...

Et je joins Le code pour les curieux même si en vrai il est dans le corps du .fla que je vais vous épargner parce qu'il pèse 3Mo avec tout le bazar dedans.
IP archivée

fr32c

  • Wisi Addict
  • ***
  • Hors ligne Hors ligne
  • Messages: 125
    • Voir le profil
SetInterval+Tweens
« Réponse #1 le: juin 25, 2007, 17:57:26 pm »

Je viens de découvrir que _visible mangeait nettement moins de ressources !!! (du coup y'a tout à retimer)
Version2
IP archivée

T_bo

  • Wisi J'habite sur le forum
  • ****
  • Hors ligne Hors ligne
  • Messages: 349
    • Voir le profil
SetInterval+Tweens
« Réponse #2 le: juin 25, 2007, 20:01:39 pm »

Code un peu bizarre mais je vois a peu près ta logique.

1 tu devrais définir ta fonction  setUpAlphaInstancesAlpha(); avant son premier appel (donc avant la ligne 10 et pas à la fin)

2 tu devrais créé une fonction qui fait appel clearInterval pour a,b,c... de la même manière que ta fonction  setUpAlphaInstancesAlpha(); réinitialise la transparence de tout tes éléments en première instruction de ta fonction btnrelease de cette manière tu es sur qu'aucun de tes textes n'apparaîtra après cout car tu empêche l'apparition de ce qui ne sont pas apparu et après tu rend invisibles ce qui sont déjà la, c'est un ordre plus logique.

Enfin quitte a avoir de toute manière une animation différentes (clip?) par "flèche" pourquoi ne pas y avoir incorporer tes textes et leur apparition dans ces anim tu t'embêtera beaucoup moins qu'avec tes intervalles,  tu économisera des ressources et sera moins galère que ton code non?  (mais tout depend comment tu as fait ton anim juste avec le code c pas évident de tout pigé)
IP archivée

fr32c

  • Wisi Addict
  • ***
  • Hors ligne Hors ligne
  • Messages: 125
    • Voir le profil
SetInterval+Tweens
« Réponse #3 le: juin 26, 2007, 07:15:00 am »

Merci pour les retours :)
1 : OK, c'est remonté, je ne savais pas que la position dans le code influait (en gros pour moi c'était "import des classes, variables, evenements et fonctions"...)

2 : j'ai remanié les setinterval avec :
      setTimeout (My1AlphTween, 200, TB1Choix, 1);
plus digeste que :
      a=setInterval (My1AlphTween, 200, TB1Choix, 1);
      setInterval (clearInterval, 210, a);

Et aussi, avec _visible, tout va plus vite, donc je peux mettre des vrais temps peu pénalisants (<1s) pour les apparitions de texte.

Par contre j'ai voulu faire une arrivée à l'échelle des blocs texte, mais c'est pas excellent, et plus de tween = moins d'anim...

L'etat du matin

Reste à trouver où caser dans le code les setInterval pour revenir à la page d'accueil et gérer une anim aléatoire du soleil en bas de l'accueil pour que sa bulle apparaisse de temps à autres en random et qu'on puisse cliquer dessus aussi.
Le code du matin

En fait, l'idée c'est que passé 10 ou 15s, on revienne à la page d'accueil, c'est une borne interactive touchscreen juste pour de la démo...
IP archivée

T_bo

  • Wisi J'habite sur le forum
  • ****
  • Hors ligne Hors ligne
  • Messages: 349
    • Voir le profil
SetInterval+Tweens
« Réponse #4 le: juin 26, 2007, 09:23:45 am »

1 l'ordre n'as pas d'importance en soit  mais il faut toujours qu'une fonction soit définis avant de l'appeler la tu appelé ta fonction (ligne 10 alors que flash ne savait pas a ce moment ce qu'elle doit faire)

2: oui et non ca va être plus dur de tous les annuler avant de commencer une nouvelle anim (genre un autre boutons cliquer avant la fin de l'anim du premier).

plus de tween moins d'anim tout as fait d'accord mais même si il est mieux de mettre tous son code dans un seul calque tu pouvais appeler tes tween dans la timeline de tes clip "flèche" et t'épargner les set interval et  tes problèmes de télescopage d'animation.

pour ton retour à la case depart, vu que tu maitrise les interval tu devrais pas avoir de pb fait un interval qui tu ramene à ton état initial au bout de 15 secondes mais qui se reinitialise des que quelqu'un fait quelque chose tu peux par exemple faire une boucle avec un compteur i++ toutes les secondes qd i=15 tu retourne a ton état initial mais des qu'il y a une action sur ta scene tu réinitialise ton i à 0 par exemple c'est tres basique mais çà devrait marcher.
IP archivée
 



Wisibility est un sité dédié à la formation aux métiers l’image. Vous y trouverez différentes ressources vous aidant à maîtriser les logiciels graphiques tels que Photoshop, Lightroom, Illustrator, InDesign, Flash… Aujourd’hui, Wisibility réunie plus d'une vingtaine d’experts, intervenant en Entreprise pour former graphistes, webdesigners, développeurs web, photographes, monteurs, trucistes…
Depuis 2006 nous nous sommes spécialisés dans les tutoriels vidéos permettant de se former à distance. Notre forum très actif, géré par une équipe de bénévoles répondra à vos demandes. Vous pourrez également profiter de nos émissions et reportages sur la Wisi TV.
Contact - Wisibility est une marque déposée

Blog - Tutoriels - Wisi TV - Forum