[AS3] Paramètres d'un clip

Résolu
jonfever Messages postés 12 Date d'inscription lundi 1 octobre 2012 Statut Membre Dernière intervention 1 octobre 2012 - 3 juil. 2011 à 17:03
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 - 4 juil. 2011 à 17:31
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

aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
3 juil. 2011 à 20:04
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
3
jonfever Messages postés 12 Date d'inscription lundi 1 octobre 2012 Statut Membre Dernière intervention 1 octobre 2012
4 juil. 2011 à 13:45
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
0
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
4 juil. 2011 à 17:31
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.
0