[AS3] Paramètres d'un clip [Résolu]

Signaler
Messages postés
12
Date d'inscription
lundi 1 octobre 2012
Statut
Membre
Dernière intervention
1 octobre 2012
-
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
-
Salut à tous!
J'ai actuellement un problème qui m'empêche d'avance plus loin et j'aimerais que vous m'aidiez si vous pouvez !
J'expose mon problème :

J'ai (pour l'exemple), deux clips sur ma scène qui porte les noms d'occurrences suivants : objet1 et objet2, jusqu'à là, ça va.
Je créé une boucle for dans laquelle je met une fonction MouseEvent qui doit détecter automatiquement sur quel clip je clic et le faire disparaître avec un visible=false. Je procède comme celà :

import flash.events.MouseEvent;
import flash.display.MovieClip;

for(var i:Number = 1; i < 3; i++)
{
function clicObjet(evt:MouseEvent):void
{
this["objet"+i].visible = false;
}
this["objet"+i].addEventListener(MouseEvent.CLICK, clicObjet);
trace(this["objet"+i]);
}


Le problème, c'est que AS3 me dit qu'il y a un problème au niveau du
this["objet"+i].visible = false;

Sachant que si je met en écriture non-automatique
objet1.visible = false
, ça marche.

Merci pour votre future aide !

3 réponses

Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
Bonjour,

une fonction dans une boucle, mais bien sur, je sais pas ou tu as vu cela, mais je te conseilles d'oublier bien vite.


objet1.addEventListener(MouseEvent.CLICK, clicObjet);
objet2.addEventListener(MouseEvent.CLICK, clicObjet);

private function clicObjet(evt:MouseEvent):void{
evt.target.visible=false;
}


d'auure part la fonction evenementiel a un parametre que tu nomme "evt" qui fait reference a l'evenement souris initiant la fonction.
Du coup en faisant evt.target, tu obtient bien l'objet qui a émis l'événement.

Cordialement
Messages postés
12
Date d'inscription
lundi 1 octobre 2012
Statut
Membre
Dernière intervention
1 octobre 2012

Salut.
Merci beaucoup à toi, tu as réglé mon problème. Saches que je suis encore débutant en AS3 et qu'il n'y a des choses qui ne sont pas forcement évidentes pour moi !
Merci beaucoup !
Cependant... je suis quand même perturbé par le fait que this["objet"+i].visible = false; ne marche pas (outre une fonction MouseEvent).
Bon après-midi
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
Si tu veux gérer une action dans une boucle il faut travailler sur une des propriété de l'object soit pour .name

object1.name ="ob1";
object2.name="ob2";

var MC:MovieClip,
for(i:int=0;i<2,i++){
MC=leconteneurdetesmc.getChildByNAme("ob"+i);
MC.visible=false;
}

soit en créant un object vide

var Xob:Object=new Object();
Xob["ob1"]=new MovieClip();
Xob["ob2"]=new MovieClip();

var nob:String;
for(i:int=0;i<2,i++){
nob="ob"+i;
Xob[nob].visible=false;
}

pour la dernière méthode j'ai fait de mémoire, mais si ca marche pas , c'est quasiment ca.