Probleme de cible getChildByName et for as3

Résolu
meumeu64
Messages postés
12
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
29 octobre 2009
- 23 sept. 2009 à 12:09
meumeu64
Messages postés
12
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
29 octobre 2009
- 24 sept. 2009 à 11:49
Bonjour à tous.
Je vous explique mon problème.
Je souhaite créer plusieurs clips dont j'incrémente le nom.
Je positionne ensuite mes clips les uns à la suite des autres.
Chacun de ces clips est composé de deux images clefs:
image 1: clip non actif.
image 2: clip actif.
je voudrais pouvoir ajouter une fonction une fonction simple qui me permet
de passer le clip sur lequel j'appuie à son image 2. C'est la que ce situe mon problème.
je n'arrive pas à trouver la bonne méthode qui me permet de cibler ces clips.


voici mon code:

var iMax=16;
var jMax=16;
var i=0;
var j=0;
var fond:Sprite=new Sprite();

function dessiner_carte() {
for (i=0; i<iMax; i++) {
for (j=0; j<jMax; j++) {
var btn:Bleu= new Bleu();
btn.name="btn"+i+j;
fond.addChild(btn);
MovieClip(fond.getChildByName("btn"+i+j)).buttonMode=true;
MovieClip(fond.getChildByName("btn"+i+j)).addEventListener(MouseEvent.MOUSE_DOWN,test);
btn.x=30*i+10;
btn.y=30*j+10;
}
}
}


function test(e:Event) {
MovieClip(fond.getChildByName("btn"+i+j)).gotoAndStop(2);
}

stage.addChild(fond);
dessiner_carte();


merci d'avance, Aymeric

7 réponses

Orange73
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

23 sept. 2009 à 12:27
Hello,

déjà, pourquoi 2 boucle for l'une dans l'autre ???

Ensuite il faut faire cela dans ta fonction test() :

function test(e:MouseEvent) {
e.currentTarget.gotoAndStop(2);
} 


a+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
3
meumeu64
Messages postés
12
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
29 octobre 2009

23 sept. 2009 à 12:36
Hé bien c'est rapide!
L'intérêt des deux boucles c'est de nommer mes clips et de
les placer à la manière d'un tableau:

btn00 btn01 btn02
btn10 btn11 btn12
btn20 btn21 btn22

Je vais essayer le code des que je rentre.
Merci à toi en tout cas
0
pegase31
Messages postés
6138
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
11
23 sept. 2009 à 13:04
Comme je viens d'expliquer à la question précédente (le principe est le même) :

La meilleure solution est de placer les occurrences dans un tableau à l'aide d'un push et de les appeler directement dans ce tableau sans taper dans la liste d'affichage d'un DisplayObjectContainer.
C'est bien plus simple et moins contraignant question prog .. sans parler du temps CPU diminué.

Peg'
0
meumeu64
Messages postés
12
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
29 octobre 2009

23 sept. 2009 à 14:05
Salut Peg',
la méthode de orange73 fonctionne mais je vais regarder ce que tu me propose.
merci à tout les deux, rapides clairs et efficaces.
Aymeric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
meumeu64
Messages postés
12
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
29 octobre 2009

23 sept. 2009 à 15:43
Re Peg',
J'ai fait fonctionner sans problème ta méthode seulement
dans le cas ou mon tableau ne présente qu'une seule dimension.
Voila le code qui pose problème:

for (var i=0; i<iMax; i++) {
for (var j=0; j<jMax; j++) {
var btn:Bleu = new Bleu();
tabOcu.push(btn);
fond.addChild(tabOcu[i][j]);
tabOcu[i][j].buttonMode=true;
btn.x=30*i+10;
btn.y=30*j+10;
tabOcu[i][j].addEventListener(MouseEvent.MOUSE_DOWN,clic);
}
stage.addChild(fond);


function clic(e:Event){
e.currentTarget.gotoAndStop(2);
}

Une autre question: est il possible avec cette méthode de rajouter un hittest
sur tabOcu[i][j] avec un autre clip?
0
meumeu64
Messages postés
12
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
29 octobre 2009

23 sept. 2009 à 15:46
Pour répondre à ma dernière question...
oui, mais avec hitTestObject...
Désolé
0
meumeu64
Messages postés
12
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
29 octobre 2009

24 sept. 2009 à 11:49
Re
Voila j'ai réussi, et pour ce que ça intéresse:

for (var i=0; i<iMax; i++) {
tabOcu.push( new Array() );
for (j=0; j<jMax; j++) {
var btn:Bleu = new Bleu();
tabOcu[i].push(btn);
fond.addChild(tabOcu[i][j]);
btn.x=30*i+10;
btn.y=30*j+10;
}
}
0