Probleme de cible getChildByName et for as3 [Résolu]

meumeu64 12 Messages postés mardi 22 janvier 2008Date d'inscription 29 octobre 2009 Dernière intervention - 23 sept. 2009 à 12:09 - Dernière réponse : meumeu64 12 Messages postés mardi 22 janvier 2008Date d'inscription 29 octobre 2009 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Orange73 1393 Messages postés dimanche 28 novembre 2004Date d'inscription 2 août 2011 Dernière intervention - 23 sept. 2009 à 12:27
3
Merci
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)

Merci Orange73 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Orange73
meumeu64 12 Messages postés mardi 22 janvier 2008Date d'inscription 29 octobre 2009 Dernière intervention - 23 sept. 2009 à 12:36
0
Merci
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
Commenter la réponse de meumeu64
pegase31 6161 Messages postés dimanche 21 décembre 2003Date d'inscription 4 septembre 2013 Dernière intervention - 23 sept. 2009 à 13:04
0
Merci
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'
Commenter la réponse de pegase31
meumeu64 12 Messages postés mardi 22 janvier 2008Date d'inscription 29 octobre 2009 Dernière intervention - 23 sept. 2009 à 14:05
0
Merci
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
Commenter la réponse de meumeu64
meumeu64 12 Messages postés mardi 22 janvier 2008Date d'inscription 29 octobre 2009 Dernière intervention - 23 sept. 2009 à 15:43
0
Merci
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?
Commenter la réponse de meumeu64
meumeu64 12 Messages postés mardi 22 janvier 2008Date d'inscription 29 octobre 2009 Dernière intervention - 23 sept. 2009 à 15:46
0
Merci
Pour répondre à ma dernière question...
oui, mais avec hitTestObject...
Désolé
Commenter la réponse de meumeu64
meumeu64 12 Messages postés mardi 22 janvier 2008Date d'inscription 29 octobre 2009 Dernière intervention - 24 sept. 2009 à 11:49
0
Merci
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;
}
}
Commenter la réponse de meumeu64

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.