Forums Développement Multimédia

Aller au contenu

déclencher des clips successivement ✔

PAO Flash

13 réponses à ce sujet

#1 d.wissocq

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 14 February 2013 - 09:03 AM

Bonjour à toutes et tous. Je suis un développeur débutant et je souhaite rationaliser mes lignes de code.
J'ai une serie de clips différents que j'ai crée dynamiquement via un attachMovie. J'ai ensuite mis ces clips dans un tableau Array avec un nom de variable. Idéalement je souhaite définir une boucle for pour comptabiliser mes clips et ensuite une fois que le premier clip a atteint 75% d'alpha, le second clip démarre, et de la même façon à 75% d'alpha il enchaine sur le troisième … et ce jusqu'à la fin de ma boucle qui contient une vingtaine de clips.

Merci de bien vouloir m'aider. Mon domaine de compétence est l'expertise Apple je suis administrateur réseau Mac/PC donc je n'ai rien contre un échange de bon procédé, je peux intervenir gratuitement en échange de quelques cours de débugage en Actionscript (plutôt en AS2).

Merci et excellente journée.

@+

#2 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 14 February 2013 - 11:07 AM

salut :)

La première chose qui me vienne c'est : pourquoi AS2 ? (c'est très très très obsolescent)… :? et tant qu'à apprendre…

La deuxième chose c'est, AS2 ou AS3, il ne faut pas utiliser une boucle, sans quoi tout se fera "d'un coup" et tu n'y verras rien.
En AS2 il te faudra avoir recours à setInterval qui permet de faire des "choses" selon un rythme (cadence) déterminé, en AS3 c'est la classe Timer. Dans les deux tu pourrais aussi avoir recours à l'écoute du EnterFrame (cadence de l'animation)

la classe Timer tu trouveras un tout petit bout d'explication - suffisant pour ce que c'est - à l'occaz de ce tuto

setInterval… ben la doc

Je ne t'en dis pas plus, dans l'espoir que tu optes pour AS3, auquel cas il y a moult tutos et exemples ici ;)

++
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#3 d.wissocq

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 14 February 2013 - 12:11 PM

Bonjour Nataly je te remercie pour ces observations pertinentes :-)

En effet je sais bien que l'AS2 est obsèlete, mais je suis en phase de production et tout mon site est en AS2.
Vu le prix que mon client m'octroie, je ne vais pas me casser la tête à tout refaire en AS3. Je suis bien conscient du rôle de SetInterval …
Je l'ai utlisé à de nombreuse reprise avec succès !

Cela dit, j'ai tout de même un problème de syntaxe qui demeure :-)

Bonne journée ;-)

#4 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7065 messages

Posté 14 February 2013 - 12:26 PM

salut
montre ce que tu as fait, il y a plusieur façon de faire ce que tu souhaite, donc il serait bien de voir vers quelle "logique" tu t'oriente
a+

#5 d.wissocq

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 14 February 2013 - 12:59 PM

Bonjour paodao, je poste le code …
Je suis à ta disposition pour tout renseignement :-)

//Création dynamique des images
this.attachMovie("Arbre_01", "Vign_arbre1", 1, {_x:19.4, _y:68, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_02", "Vign_arbre2", 2, {_x:19.4, _y:148, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_03", "Vign_arbre3", 3, {_x:19.4, _y:228, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_04", "Vign_arbre4", 4, {_x:19.4, _y:308, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_05", "Vign_arbre5", 5, {_x:19.4, _y:388, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_06", "Vign_arbre6", 6, {_x:19.4, _y:468, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_07", "Vign_arbre7", 7, {_x:85.4, _y:68, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_08", "Vign_arbre8", 8, {_x:85.4, _y:148, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_09", "Vign_arbre9", 9, {_x:85.4, _y:228, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_10", "Vign_arbre10", 10, {_x:85.4, _y:308, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_11", "Vign_arbre11", 11, {_x:85.4, _y:388, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_12", "Vign_arbre12", 12, {_x:85.4, _y:468, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_13", "Vign_arbre13", 13, {_x:541.6, _y:68, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_14", "Vign_arbre14", 14, {_x:541.6, _y:148, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_15", "Vign_arbre15", 15, {_x:541.6, _y:228, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_16", "Vign_arbre16", 16, {_x:541.6, _y:308, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_17", "Vign_arbre17", 17, {_x:541.6, _y:388, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_18", "Vign_arbre18", 18, {_x:541.6, _y:468, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_19", "Vign_arbre19", 19, {_x:608.3, _y:68, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_20", "Vign_arbre20", 20, {_x:608.3, _y:148, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_21", "Vign_arbre21", 21, {_x:608.3, _y:228, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_22", "Vign_arbre22", 22, {_x:608.3, _y:308, _xscale:13.9, _yscale:13.9}).alpha = 0;
this.attachMovie("Arbre_23", "Vign_arbre23", 23, {_x:608.3, _y:388, _xscale:13.9, _yscale:13.9}).alpha = 0;[/AS]

//Création d'un tableau pour mes images
var mesVignArbres:Array = new Array(Vign_arbre1, Vign_arbre2, Vign_arbre3, Vign_arbre4, Vign_arbre5, Vign_arbre6, Vign_arbre7, Vign_arbre8, Vign_arbre9, Vign_arbre10, Vign_arbre11, Vign_arbre12, Vign_arbre13, Vign_arbre14, Vign_arbre15, Vign_arbre16, Vign_arbre17, Vign_arbre18, Vign_arbre19, Vign_arbre20, Vign_arbre21, Vign_arbre22, Vign_arbre23);


//Déclenchement successifs des clips
Vign_arbre1.onEnterFrame = function() {
Vign_arbre1.alpha = 20;
if (Vign_arbre1.alpha == 20) {
delete this.onEnterFrame;
Vign_arbre2.onEnterFrame = function() {
  Vign_arbre2.alpha += 10;
  if (Vign_arbre2.alpha == 100) {
   delete this.onEnterFrame;
   Vign_arbre3.onEnterFrame = function() {
        Vign_arbre3.alpha += 10;
        if (Vign_arbre3.alpha == 100) {
         delete this.onEnterFrame;
         Vign_arbre4.onEnterFrame = function() {
          Vign_arbre4.alpha += 10;
          if (Vign_arbre4.alpha == 100) {
           delete this.onEnterFrame;
           Vign_arbre5.onEnterFrame = function() {
                Vign_arbre5.alpha += 10;
                if (Vign_arbre5.alpha == 100) {
                 delete this.onEnterFrame;
                 Vign_arbre6.onEnterFrame = function() {
                  Vign_arbre6.alpha += 10;
                  if (Vign_arbre6.alpha == 100) {
                   delete this.onEnterFrame;
                   Vign_arbre7.onEnterFrame = function() {
                        Vign_arbre7.alpha += 10;
                        if (Vign_arbre7.alpha == 100) {
                         delete this.onEnterFrame;
                         Vign_arbre8.onEnterFrame = function() {
                          Vign_arbre8.alpha += 10;
                          if (Vign_arbre8.alpha == 100) {
                           delete this.onEnterFrame;
                           Vign_arbre9.onEnterFrame = function() {
                                Vign_arbre9.alpha += 10;
                                if (Vign_arbre9.alpha == 100) {
                                 delete this.onEnterFrame;
                                 Vign_arbre10.onEnterFrame = function() {
                                  Vign_arbre10.alpha += 10;
                                  if (Vign_arbre10.alpha == 100) {
                                   delete this.onEnterFrame;
                                   Vign_arbre11.onEnterFrame = function() {
                                        Vign_arbre11.alpha += 10;
                                        if (Vign_arbre11.alpha == 100) {
                                         delete this.onEnterFrame;
                                         Vign_arbre12.onEnterFrame = function() {
                                          Vign_arbre12.alpha += 10;
                                          if (Vign_arbre12.alpha == 100) {
                                           delete this.onEnterFrame;
                                           Vign_arbre13.onEnterFrame = function() {
                                                Vign_arbre13.alpha += 10;
                                                if (Vign_arbre13.alpha == 100) {
                                                 delete this.onEnterFrame;
                                                 Vign_arbre14.onEnterFrame = function() {
                                                  Vign_arbre14.alpha += 10;
                                                  if (Vign_arbre14.alpha == 100) {
                                                   delete this.onEnterFrame;
                                                   Vign_arbre15.onEnterFrame = function() {
                                                        Vign_arbre15.alpha += 10;
                                                        if (Vign_arbre15.alpha == 100) {
                                                         delete this.onEnterFrame;
                                                         Vign_arbre16.onEnterFrame = function() {
                                                          Vign_arbre16.alpha += 10;
                                                          if (Vign_arbre16.alpha == 100) {
                                                           delete this.onEnterFrame;
                                                           Vign_arbre17.onEnterFrame = function() {
                                                                Vign_arbre17.alpha += 10;
                                                                if (Vign_arbre17.alpha == 100) {
                                                                 delete this.onEnterFrame;
                                                                 Vign_arbre18.onEnterFrame = function() {
                                                                  Vign_arbre18.alpha += 10;
                                                                  if (Vign_arbre18.alpha == 100) {
                                                                   delete this.onEnterFrame;
                                                                   Vign_arbre19.onEnterFrame = function() {
                                                                        Vign_arbre19.alpha += 10;
                                                                        if (Vign_arbre19.alpha == 100) {
                                                                         delete this.onEnterFrame;
                                                                         Vign_arbre20.onEnterFrame = function() {
                                                                          Vign_arbre20.alpha += 10;
                                                                          if (Vign_arbre20.alpha == 100) {
                                                                           delete this.onEnterFrame;
                                                                           Vign_arbre21.onEnterFrame = function() {
                                                                                Vign_arbre21.alpha += 10;
                                                                                if (Vign_arbre21.alpha == 100) {
                                                                                 delete this.onEnterFrame;
                                                                                 Vign_arbre22.onEnterFrame = function() {
                                                                                  Vign_arbre22.alpha += 10;
                                                                                  if (Vign_arbre22.alpha == 100) {
                                                                                   delete this.onEnterFrame;
                                                                                   Vign_arbre23.onEnterFrame = function() {
                                                                                        Vign_arbre23.alpha += 10;
                                                                                        if (Vign_arbre23.alpha == 100) {
                                                                                         delete this.onEnterFrame;
                                                                                        }
                                                                                   }
                                                                                  }
                                                                                 }
                                                                                }
                                                                           }
                                                                          }
                                                                         }
                                                                        }
                                                                   }
                                                                  }
                                                                 }
                                                                }
                                                           }
                                                          }
                                                         }
                                                        }
                                                   }
                                                  }
                                                 }
                                                }
                                           }
                                          }
                                         }
                                        }
                                   }
                                  }
                                 }
                                }
                           }
                          }
                         }
                        }
                   }
                  }
                 }
                }
           }
          }
         }
        }
   }
  }
}
}
}

Voilà en fait c'est surtout la partie déclenchement que je souhaite rationaliser !!!
Cela marche mais l'écriture me parait très longue :-)

Modifié par Krevare, 14 February 2013 - 18:25 PM.
Ajout des balises de code


#6 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 14 February 2013 - 13:16 PM

bon ok, tu tiens au enterFrame et j'en ai fini de me battre contre des moulins ;) allons-y pour


je n'ai pas bien regardé ton code faute de balises (et pareil je suis lasse de le mettre et de le dire, même si toi c'est la première fois), mais ça me semble pas loin d'être faisable.

Un seul enterFrame qui parcourt le tableau, saute les clips à 75%, réduit l'alpha du premier à moins de 75% et sort, et voilà…

je dis parcours, mais il me semble que j'utiliserais une globale genre _indexCourant… ;)

vu que nous sommes plusieurs à lire ta question, et que Pao a raison, il y a moult façons de faire, je pense que tu vas bientôt avoir d'autres pistes voire même un petit bout de code ;)
(je jouerais bien mais je sens que je vais arriver après la bataille)

:)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#7 d.wissocq

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 14 February 2013 - 13:38 PM

Euh je ne comprends pas ta remarque il me semblait bien avoir mis le code avec les Balise AS !!!
En effet j'ai voulu détailler le code et j'ai mis des portions à chaque fois je serai plus vigilent dorénavant :-)

Merci pour le coup de main j'apprécie vraiment :)

#8 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 14 February 2013 - 13:43 PM

Il y a tout de même pas mal de soucis dans le code, du genre grosses étourderies.

La transparence, c'est _alpha en AS2 et non pas alpha…

Ensuite, après tes déclarations, tu imbriques des if.
Que font ils ?

Vign_arbre1.onEnterFrame = function() {
   Vign_arbre1.alpha = 20;
   if (Vign_arbre1.alpha == 20) {
          delete this.onEnterFrame;
 
Ça définit l'alpha du clip à 20;
puis aussitôt, Ça teste si l'alpha est à 20… Bien sûr qu'il y est, puisqu'on vient jsute de le définir…
Du coup on exécute le code à l'intérieur des {} du if : qui supprime l'enterframe.
Fin du code, fin de l'animation. Effectivement, Ça ne fait rien.


Comme Nataly, je te conseillerais d'utiliser une variable _indice, et quand l'_alpha du clip à la position _indice du tableau est supérieure à 70, tu augmente la variable _indice. Sinon, tu augmente l'_alpha…

#9 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 14 February 2013 - 13:44 PM

Pour les balises, c'est CODE et /CODE entre []
et non pas AS

(même si dans ce cas, la bonne balise n'arrangerait pas les choses

Spoiler


#10 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 14 February 2013 - 13:44 PM

allez, j'ai joué quand même ;)

et c'est là qu'on se souvient en quoi c'est ultra pénible as2 avec sa manie d'échouer en silence :P

var tbArbres:Array = new Array();
var pas = 20;
var idx_c = 0;
//var c:MovieClip;
dans la boucle tu crées, tu valorises les propriétés, et tu remplis le tableau
for (i = 0; i < 10; i++) {
        //tu aurais pu d'abord créer le clip piuis l'ajouter au tableau, là je fais tout d'un coup
        //c = attachMovie("Mv_Demo", "onSenFout", i, {_x:i * pas, _y:100, _alpha:50});
        //tbArbres.push(c)
        tbArbres.push(attachMovie("Mv_Demo", "onSenFout", i, {_x:i * pas, _y:100, _alpha:0}));
}
// un setInterval bien propre
idInterval = setInterval(affiche, 50);

var max = tbArbres.length;

function affiche() {
        tbArbres[idx_c]._alpha += 10;
        if (tbArbres[idx_c]._alpha > 75) {
                idx_c++;
        }
        if (idx_c > max) {
                 //ne pas oublier de "tuer" l'appel récurrent
                clearInterval(idInterval);
        }

}


testé - et y avait intérêt ;)

n'hésite pas pour plus d'infos

Juste à noter que tu peux passer au attachMovie toutes les propriétés en troisième paramètre (tu avais appliqué le _alpha en tant que propriété sur l'objet renvoyé, c'est pas mal, mais ça complique l'écriture sans raison)


++ :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#11 d.wissocq

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 14 February 2013 - 13:48 PM

Bonjour dlder, je suis désolé en effet, alpha est une propriété que j'ai redéfini pour que la transparence boucle de 0 à 100, contrairement à flash qui parcourt l'alpha de 0 à 255.

En tout cas je suis de près les conseils avisés que vous distillez.

Mille mercis encore :-)

#12 d.wissocq

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 14 February 2013 - 13:59 PM

Merci infiniment Nataly là c'est clair, je m'incline respectueusement :))
J'ai tout à fait compris ton code c'est devenu limpide.

Merci encore à toute et tous

#13 Krevare

    Ceinture Noire

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 923 messages

Posté 14 February 2013 - 18:27 PM

HS : J'ai ajouté la balise code et je confirme, ca n'arrange pas vraiment les choses vu l'indentation ^^
En tout cas, ne lui jetons pas la pierre, il avais bien essayé :mrgreen:

Sur ce, je vous laisse :)

Fred.

#14 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 14 February 2013 - 21:10 PM

Voir le messageKrevare, le 14 February 2013 - 18:27 PM, dit :

HS : J'ai ajouté la balise code et je confirme, ca n'arrange pas vraiment les choses vu l'indentatio
:-D Et alors, mon spoilezr il servait à qoi d'après toi ?




Voir le messageKrevare, le 14 February 2013 - 18:27 PM, dit :

En tout cas, ne lui jetons pas la pierre, il avais bien essayé :mrgreen:/> Sur ce, je vous laisse
On est bien d'accord ;-)

#15 Krevare

    Ceinture Noire

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 923 messages

Posté 15 February 2013 - 02:40 AM

Je n'ai vu le reste du thread et le spoiler qu'après, je m'étais arrêté au post de Nataly :oops:

J'ai dégainé trop vite :mrgreen:

Désolé

:ph34r:



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP