Créer et manipuler des points (boucle) avec Actionscript [Résolu]

Messages postés
60
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
18 août 2006
- - Dernière réponse : michel_roger
Messages postés
60
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
18 août 2006
- 23 juin 2006 à 01:29
Bonsoir,
J'essaye en ce moment de créer une page simple avec une anim flash.
Sur les actions de ma frame principale, je charge un document xml. Je désire créer des points ou des carrés afin de les placer sur une carte. Je récupère les coordonnées x et y dans mon code xml.
Ce qui donne :
// Création de l'objet XML
data=new XML();
data.ignoreWhite = true;
data.onLoad = setPoints;
// Déclaration de l'évènement lors du chargement du fichier xml
function setPoints() {
    // J'utilise cette boucle pour parcourir tous les points à afficher
    for(i=0;i < data.firstChild.childNodes.length;i++) {
        // ici on récupère les coordonnées
        curX = data.firstChild.childNodes[i].attributes.x;
        curY = data.firstChild.childNodes[i].attributes.y;
       // affichage de debug, les coordonnées s'affichent bien dans le champs texte
        info.text += curX+" "+curY+"\n";
       // J'ai créé au préalable un MovieClip 'point' (juste un cercle)
       // C'est lui que je voudrais copier à chaque nouveau point à afficher

        var mc = duplicateMovieClip("point", "mc", 1);
       // Ici je bloque complet, comment créer et placer un MovieClip dans la carte ?
       // Vu qu'ils sont créés dynamiquement, je ne sais pas comment y accéder,
       // J'ai l'impression que le même objet est déplacé mais pas dupliqué.
       // J'ai au moins un point avec des coordonnées différentes des autres
        setProperty("mc", _x, curX);
        setProperty("mc", _y, curY);
        setProperty("mc", _visible, true);
    }
}

Je viens d'essayer avec setProperty("mc"+i, _x, curX); afin de différencier chaque nom de point mais toujours un seul point affiché.
Merci d'avance pour votre aide et bonne nuit
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
316
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
19 septembre 2012
3
Merci
salut !

C'est normal.
duplicateMovieClip("point", "mc"+i, 1);
Tout est bon sauf le 1 qui désigne la profondeur et un seul objet peut etre assigner a une profondeur donnée.
Donc au lieu de mettre "1" mets plutot "i". ce qui aura pour but d'augmenter aussi cette profondeur.
i peut aussi être remplacé par this.getNextHighestDepth() qui cherche la prochaine profondeur disponible.

Ensuite, au lieu de setProperty("mc"+i, _x, curX);  tu as :
this["mc"+i]._x = curX; //attention this est le nom du clip dans lequel se trouve mci, ça peut etre _root ou le nom d'un clip.
qui est largement plus utilisé. (marche aussi avec toutes les autres propriétés : _x _y _alpha _visible _width _height etc...)

J'espere que c'était ça. A +

KiNgCoBrA

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 214 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kingcobra
Messages postés
60
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
18 août 2006
0
Merci
Apparemment le même MovieClip (celui que j'ai créé auparavant et que je duplique) est déplacé plusieurs fois et non ses copies. Même si je fais :
// Avec i variable incrémentée par le for()
var mc = duplicateMovieClip("point", "mc"+i, 1); ou duplicateMovieClip("point", "mc"+i, 1);
setProperty("mc"+i, _x, curX);
setProperty("mc"+i, _y, curY);
setProperty("mc"+i, _visible, true);
Commenter la réponse de michel_roger
Messages postés
60
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
18 août 2006
0
Merci
De la pure balle. Ca fonctionne nickel maintenant avec _root["mc"+i].attribut (_x, _y, _visible, ...).
Merci beaucoup KiNgCoBrA.
Bon we ;)
Commenter la réponse de michel_roger