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 12
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
Rejoignez-nous