

#1
Posté 14 February 2013 - 09:03 AM
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
Posté 14 February 2013 - 11:07 AM

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

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

++
une tartine de tutos
#3
Posté 14 February 2013 - 12:11 PM
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
Posté 14 February 2013 - 12:26 PM
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
Posté 14 February 2013 - 12:59 PM
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
Posté 14 February 2013 - 13:16 PM

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)

une tartine de tutos
#7
Posté 14 February 2013 - 13:38 PM
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
Posté 14 February 2013 - 13:43 PM
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;
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
Posté 14 February 2013 - 13:44 PM
et non pas AS
(même si dans ce cas, la bonne balise n'arrangerait pas les choses
#10
Posté 14 February 2013 - 13:44 PM

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

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)
++

une tartine de tutos
#11
Posté 14 February 2013 - 13:48 PM
En tout cas je suis de près les conseils avisés que vous distillez.
Mille mercis encore :-)
#12
Posté 14 February 2013 - 13:59 PM

J'ai tout à fait compris ton code c'est devenu limpide.
Merci encore à toute et tous
#13
Posté 14 February 2013 - 18:27 PM
En tout cas, ne lui jetons pas la pierre, il avais bien essayé

Sur ce, je vous laisse

Fred.
#14
Posté 14 February 2013 - 21:10 PM
Krevare, le 14 February 2013 - 18:27 PM, dit :
Krevare, le 14 February 2013 - 18:27 PM, dit :


#15
Posté 15 February 2013 - 02:40 AM

J'ai dégainé trop vite

Désolé

1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)