Créer une boucle

Résolu
mikouRoux Messages postés 69 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 6 octobre 2009 - 14 juil. 2007 à 12:58
mikouRoux Messages postés 69 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 6 octobre 2009 - 14 juil. 2007 à 18:09
Salut,

Je ne comprend pas comment synthétiser les lignes de codes suivantes en une petite boucle claire qui incrémente le numéro du dot.._mc.
Quelqu'un a t-il une solution ?

function onEnterFrame(){
    this.dot1_mc.onEnterFrame = light(focus_mc=dot1_mc);
    this.dot2_mc.onEnterFrame = light(focus_mc=dot2_mc);
    this.dot3_mc.onEnterFrame = light(focus_mc=dot3_mc);
    this.dot4_mc.onEnterFrame = light(focus_mc=dot4_mc);
    this.dot5_mc.onEnterFrame = light(focus_mc=dot5_mc);
    this.dot6_mc.onEnterFrame = light(focus_mc=dot6_mc);
    this.dot7_mc.onEnterFrame = light(focus_mc=dot7_mc);
    this.dot8_mc.onEnterFrame = light(focus_mc=dot8_mc);
    this.dot9_mc.onEnterFrame = light(focus_mc=dot9_mc);
    ...
    this.dot99_mc.onEnterFrame = light(focus_mc=dot99_mc);
    this.dot100_mc.onEnterFrame = light(focus_mc=dot100_mc);
}

Ce code appel un fonction 'light' en lui envoyant comme variable (focus_mc) le nom de plusieur movie clip qui (dot1_mc, dot2_mc, dot3_mc... dot100_mc)

Merci d'avance
MikouRoux

3 réponses

cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
14 juil. 2007 à 14:20
Salut,

Il faut aussi penser à limiter au maximum le nombre d'EnterFrame dans ton code, ici il ne faut surtout pas en créer autant, tu risque de de faire ramer méchament ton anim. Bon enfin bref... essaye plutôt :

function light(mc:MovieClip){
    trace(mc);
}
onEnterFrame = function(){
    for(i=1; i<=100; i++){
        this.light(this['dot'+i]);
    }
}

Et quand (si) tu n'a plus besoin de ton enterFrame il faut bien penser à le supprimer avec :

delete this.onEnterFrame;

++
3
mikouRoux Messages postés 69 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 6 octobre 2009
14 juil. 2007 à 18:09
Re,

Merci beaucoup pour ta proposition.
Tel que tu l'a écris, ca ne fonctionnait pas tout à fait, mais j'ai modifié légerement le code et ca fonctionne nickel :

function onEnterFrame
(){
    for(i=1; i<=16; i++){
        light(focus_mc=this['dot'+i+'_mc']);
    }
}

function light(){
    dx = (focus_mc.
_x-
_xmouse);
    dy = (focus_mc.
_y-
_ymouse);
    focus_mc.
_alpha =
Math.sqrt(dx*dx+dy*dy);
    focus_mc.
_height = 30*(200-focus_mc.
_alpha)/300;
    focus_mc.
_width = 30*(200-focus_mc.
_alpha)/300;
    focus_mc.
_alpha = 100*(200-focus_mc.
_alpha)/200;
    if (focus_mc.
_width<6){
        focus_mc.
_width=6;
        focus_mc.
_height=6;
    }
}

Sinon, je ne peux pas faire de 'delete this.onEnterFrame' parce que la fonction light doit être continuellement rafraichie pour réagir au mouvements de la souris.

++
MikouRoux
3
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
14 juil. 2007 à 14:17
Salut,

Il faut aussi penser à limiter au maximum le nombre d'EnterFrame dans ton code, ici il ne faut surtout pas en créer autant, tu risque de de faire ramer méchament ton anim. Bon enfin bref... essaye plutôt :

function light(mc:MovieClip){
    trace(mc);
}
onEnterFrame = function(){
    for(i=1; i<=100; i++){
        this.light(this['dot'+i]);
    }
}

Et quand (si) tu n'a plus besoin de ton enterFrame il faut bien penser à le supprimer avec :

delete this.onEnterFrame;

++
0
Rejoignez-nous