Toujours mon 'i' qui se bloque à la valeur max

[Résolu]
Signaler
Messages postés
69
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
6 octobre 2009
-
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007
-
ReResalut,

J'espère que vous n'allez pas finir par en avoir mare de moi et de mes questions stupides :D
Surtout toi embalmer qui déjà m'a sauvé la vie 2 fois hier. Encore un grand merci.

Cette fois ci, j'ai un problème pour charger un noeud XML
Théoriquement j'aimerais que le 'trace(i)' de la fonction m'affiche le numéro du clip 'dot'+i+'_mc'.
Exemple : quand dot5_mc alors i = 5.
Actuellement le 'i' à l'intérieur de la fonction onPress (celui qui est censé charger le bon noeud XML) reste bloqué à 17...

function onEnterFrame(){
    for(i=1; i<=16; i++){
        light(focus_mc=this['dot'+i+'_mc']);
        this['dot'+i+'_mc'].onPress = function(){           
            viewer_mc._visible = true;
            trace(i);
            trace(xml.firstChild.childNodes[i-1].attributes.image);
        }
    }
}

Merci d'avance
MikouRoux

5 réponses

Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

Re,

Perso je fonctionne de 2 manières dans ce genre de situation :

Soit la manière de Peg' qui consiste à te créer à la vollé une variable contenant "i" à l'intérieur de ton clip cliqué, par exemple :

function onEnterFrame(){
    for(i=1; i<=16; i++){
        light(focus_mc=this['dot'+i+'_mc']);
        this['dot'+i+'_mc'].onPress = function(){
            this.nbr = i;
            trace(this.nbr);
            viewer_mc._visible = true;
            loadMovie(xml.firstChild.childNodes[nbr-1].attributes.image , _root.viewer_mc.roomPicture_mc)
        }
    }
}

Soit en récupérant le nombre contennu dans ton nom d'occurence (ex : 52 de 'dot52_mc') :

function onEnterFrame() {
    for (i=1; i<=200; i++) {
        light(focus_mc=this['dot'+i+'_mc']);
        this['dot'+i+'_mc'].onPress = function() {
            var number = this._name.substring(3, this._name.length-3);
            trace(number);
            viewer_mc._visible = true;
            loadMovie(xml.firstChild.childNodes[number-1].attributes.image, _root.viewer_mc.roomPicture_mc);
        };
    }
}

Voilà, voilà , par ailleurs lorsque tu attribue à ton clip un gestionnaire d'évènement onPress tu n'a pas besoin de le répéter dans un enterFrame.

PS : Ta question est loin d'être stupide, un forum c'est fait pour aider, quelque soit le niveau... on a tous débuté un jour

++
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

autant pour  moi j'ai écris une connerie sur ma 1 ère proposition. Il faut que tu fasse une première boucle pour créer la variable "nbr" et ensuite une  boucle pour ton évènement onPress

for (i=1; i<=6; i++) {
    this['dot'+i+'_mc'].nbr = i;
}
for (j=1; j<=6; j++) {
    this['dot'+j+'_mc'].onPress = function() {
        trace(this.nbr);
    };
}

++
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
ce qu'il t'arrive est plus que normal :

Tu crées à la volée des fonctions "onPress", mais ton "i" continue jusqu'à la fin .. si tu traces "i", tu obtiendras toujours la même valeur partout.

Tu penses que ton "i" est figé dans la fonction de chaque bouton, alors que "i" est une variable qui évolue même après, ce qui te crées ce souci. La solution est de créer un "i" dans ton bouton et de l'appeller par "this.i", là il sera figé.

Peg'
Messages postés
69
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
6 octobre 2009

ca ne fonctionne toujours pas.
Cette fois ci avec 'this.i', il me retourne  : i : undefined

function onEnterFrame(){
    for(i=1; i<=16; i++){
        light(focus_mc=this['dot'+i+'_mc']);
        this['dot'+i+'_mc'].onPress = function(){
            trace("i : "+this.i);
            viewer_mc._visible = true;
            loadMovie(xml.firstChild.childNodes[i-1].attributes.image , _root.viewer_mc.roomPicture_mc)
        }
    }
}

++
Messages postés
69
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
6 octobre 2009

Génial,

Je te remercie encore une fois ! Merci à toi aussi Peg.

Embalmer, la première solution donne le même résultat que celui de peg : nbr = undifined.
J'ai donc opté pour la deuxième solution, celle de récupérer le nombre dans mon nom d'occurence, ce qui marche très bien.
Il y a tout de même un côté un peu 'bricolage' qui me tracasse, mais ici ca fonctionne très bien :)

Sinon, pour le onPress je le répete dans le on enterFrame, car si je le met en dehors de la première fonction, j'ai ce fameux problème de i. Il ne trouve sa valeur que si onPress se trouve imbriqué dans onEnterFrame (J'espère que je suis assez compréhensible)

En tous les cas merci à vous ;) Vive ce forum :)
++
MikouRoux