Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[FLA] problème de boucle avec 'for'

2 réponses
Avatar
pouic pouic
Bonjour,
J'ai un petit soucis et je cherche un coup de main .... je compte sur vous
Je cherche en arriavnt sur une frame à repositionner certains clips eyant
comme nom d'occurence "titres + un chiffre" sur un _y bien précis..
Ca marche bien, sauf que ma fonction ne s'arrete pas et calcul un _y qui va
vers l'infinie 0, ce qui ralenti largement les autres animations...
Maintenant la question est :

Comment stopper cette boucle quand mon _y (ou plutot 'this.tempo' = 0) ?

j'utilise donc le code suivant :


// --------------------------------------------
// ------ MOUVEMENT du titre ---
// --------------------------------------------
MovieClip.prototype.mouvement = function(obj, coefficient, frottement) {
this.tempo += (obj-this._y)*coefficient;
this.tempo *= frottement;
this._y += this.tempo;
var z = this.tempo;
// ------------- le stoper | Optimisation
// j'aimerai trouver un moyen de stopper cette fonction car elle demande
//de la ressource machine, ce qui ralenti les autres animations et calculs
// j'ai donc pensé à un truc de ce genre... mais ça ne marche pas

if (z>=0 && z<=0.52) {
break;
}
trace(this.tempo);
// ------------------------------------
};




for (var i = 1; i<=2; i++) {
this["titres"+i].onEnterFrame = function() {
this._alpha = 100;
this.mouvement(325, .8, .7);
}
};
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
stop();


Help!
Merci d'avance.
je peux envoyer le .fla à qui veut
--

UWL WORKSHOP & SURFBOARDS
Zac des Fourneaux
17690 ANGOULINS / MER | FRANCE
Tél: +33 (0) 5 46 27 00 27
Fax: +33 (0) 5 46 27 03 27
Email : contact@uwl-workshop.com
----------------------------------------------------------------------------
-----------------------------------------------------------

2 réponses

Avatar
Shaackal
Salut,
j'ai regaré vite fait et la solution (rapide a premiere vue) peut être :
<code>

for (var i = 1; i<=2; i++) {
this["titres"+i].onEnterFrame = function()
{
this._alpha = 100;
this.mouvement(325, .8, .7);
if (i >=2){
this.onEnterFrame = null;
}
}
}
Le null detruit les actions du comportement @+

"pouic pouic" a écrit dans le message de news:
c0d03e$eki$
Bonjour,
J'ai un petit soucis et je cherche un coup de main .... je compte sur vous
Je cherche en arriavnt sur une frame à repositionner certains clips eyant
comme nom d'occurence "titres + un chiffre" sur un _y bien précis..
Ca marche bien, sauf que ma fonction ne s'arrete pas et calcul un _y qui


va
vers l'infinie 0, ce qui ralenti largement les autres animations...
Maintenant la question est :

Comment stopper cette boucle quand mon _y (ou plutot 'this.tempo' = 0) ?

j'utilise donc le code suivant :


// --------------------------------------------
// ------ MOUVEMENT du titre ---
// --------------------------------------------
MovieClip.prototype.mouvement = function(obj, coefficient, frottement) {
this.tempo += (obj-this._y)*coefficient;
this.tempo *= frottement;
this._y += this.tempo;
var z = this.tempo;
// ------------- le stoper | Optimisation
// j'aimerai trouver un moyen de stopper cette fonction car elle demande
//de la ressource machine, ce qui ralenti les autres animations et


calculs
// j'ai donc pensé à un truc de ce genre... mais ça ne marche pas

if (z>=0 && z<=0.52) {
break;
}
trace(this.tempo);
// ------------------------------------
};




for (var i = 1; i<=2; i++) {
this["titres"+i].onEnterFrame = function() {
this._alpha = 100;
this.mouvement(325, .8, .7);
}
};



// -------------------------------------------------------------------------



// -------------------------------------------------------------------------
stop();


Help!
Merci d'avance.
je peux envoyer le .fla à qui veut
--

UWL WORKSHOP & SURFBOARDS
Zac des Fourneaux
17690 ANGOULINS / MER | FRANCE
Tél: +33 (0) 5 46 27 00 27
Fax: +33 (0) 5 46 27 03 27
Email :
--------------------------------------------------------------------------


--
-----------------------------------------------------------





Avatar
PierreAlain
bonjour Pouic pouic.

Tu pourrais mettre un test en début de fonction en gardant un tableau
parallèle de tes objets
TabActif = new Array(); ....

et la première ligne de la fonction
if ( TabActif[ numero ] ){
... ton code...
}
} // fin de fonction

Tu passerais par la fonction, mais éviterait tout calcul.

--

Pierre Alain




"pouic pouic" a écrit dans le message de
news:c0d03e$eki$
Bonjour,
J'ai un petit soucis et je cherche un coup de main .... je compte sur vous
Je cherche en arriavnt sur une frame à repositionner certains clips eyant
comme nom d'occurence "titres + un chiffre" sur un _y bien précis..
Ca marche bien, sauf que ma fonction ne s'arrete pas et calcul un _y qui


va
vers l'infinie 0, ce qui ralenti largement les autres animations...
Maintenant la question est :

Comment stopper cette boucle quand mon _y (ou plutot 'this.tempo' = 0) ?

j'utilise donc le code suivant :


// --------------------------------------------
// ------ MOUVEMENT du titre ---
// --------------------------------------------
MovieClip.prototype.mouvement = function(obj, coefficient, frottement) {
this.tempo += (obj-this._y)*coefficient;
this.tempo *= frottement;
this._y += this.tempo;
var z = this.tempo;
// ------------- le stoper | Optimisation
// j'aimerai trouver un moyen de stopper cette fonction car elle demande
//de la ressource machine, ce qui ralenti les autres animations et


calculs
// j'ai donc pensé à un truc de ce genre... mais ça ne marche pas

if (z>=0 && z<=0.52) {
break;
}
trace(this.tempo);
// ------------------------------------
};




for (var i = 1; i<=2; i++) {
this["titres"+i].onEnterFrame = function() {
this._alpha = 100;
this.mouvement(325, .8, .7);
}
};



// -------------------------------------------------------------------------



// -------------------------------------------------------------------------
stop();


Help!
Merci d'avance.
je peux envoyer le .fla à qui veut
--

UWL WORKSHOP & SURFBOARDS
Zac des Fourneaux
17690 ANGOULINS / MER | FRANCE
Tél: +33 (0) 5 46 27 00 27
Fax: +33 (0) 5 46 27 03 27
Email :
--------------------------------------------------------------------------


--
-----------------------------------------------------------