Pb getChildByName et setTextFormat

Résolu
projer Messages postés 112 Date d'inscription lundi 6 avril 2009 Statut Membre Dernière intervention 17 janvier 2015 - 4 avril 2010 à 18:12
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 5 avril 2010 à 01:45
Bonjour, j'ai fait ce bout de code d'un menu créé dynamiquement mais j'ai un soucis. En effet, je veux que quand on clique sur un des onglets, qu'il change de couleur et bien sûr avant que ça réinitialise tous les onglets.

Mes 2 soucis : Les ButtonMode qui marche pas et les getChildByName qui me retourne un message d'erreur...

var sptAction=new Sprite();
addChild(sptAction);
sptAction.mouseChildren=true;

for(var i:int=0;i<3;i++){
var texte:TextField=new TextField();
texte.name="txtAction"+i;
texte.x=170;
texte.y=500-15*i;
texte.selectable=false;
texte.text="texte N°"+i;
texte.autoSize=TextFieldAutoSize.LEFT;
var formatTexte:TextFormat=new TextFormat();
formatTexte.font="Arial";
formatTexte.size=10;
formatTexte.color=0xa49281;
texte.setTextFormat(formatTexte);
var sptTexte:Sprite=new Sprite();
sptTexte.addChild(texte);
sptTexte.addEventListener(MouseEvent.CLICK,action);
sptTexte.name="sptAction"+i;
sptTexte.buttonMode=true;
sptAction.addChild(sptTexte);
}

function action(evt:MouseEvent){
//on récupère le numéro d'index du champ de texte cliqué
var index:int=evt.currentTarget.name.substr(9);
//changement d'état des boutons
var formatTexte:TextFormat=new TextFormat();
for(var i:int=0;i<3;i++){
formatTexte.color=0xa49281;
getChildByName("txtAction"+i).setTextFormat(formatTexte);
}
formatTexte.color=0xff6f00;
getChildByName("txtAction"+index).setTextFormat(formatTexte);
}

5 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
4 avril 2010 à 19:06
Bonsoir,

Pour pouvoir cibler un élément créé à la volée facilement, il suffit de le placer dans un Array, et pour récupérer son emplacement dans l'array lors du clic, faire dans la fonction déclenchée par l'écouteur :

var index:int = monArray.indexOf(Event.currentTarget);


Peg'
3
projer Messages postés 112 Date d'inscription lundi 6 avril 2009 Statut Membre Dernière intervention 17 janvier 2015
5 avril 2010 à 01:21
Il me renvoyait true étonnamment mais j'ai trouvé ce qu'il fallait faire pour que ça marche très étrangement...

en fait sur le sprite sur lequel on veut activer le curseur en forme de main, il faut mettre un mouseChildren=false, ce qui me parait étrange car le texte dessous est en selectable=false donc ne devrait pas géner...

Le principal étant que ça fonctionne au final :)

Merci beaucoup pour ton aide ;)
3
projer Messages postés 112 Date d'inscription lundi 6 avril 2009 Statut Membre Dernière intervention 17 janvier 2015
4 avril 2010 à 20:49
Merci pour ta réponse, j'ai modifié avec des tableaux et ça marche nikel.

Par contre, je n'ai toujours pas trouvé la solution pour les buttonMode...

var sptAction=new Sprite();
addChild(sptAction);

var tableau:Array=new Array();

for(var i:int=0;i<3;i++){
tableau[i]=new TextField();
tableau[i].name="txtAction"+i;
tableau[i].x=170;
tableau[i].y=15*i;
tableau[i].text="texte N°"+i;
tableau[i].selectable=false;
var formatTexte:TextFormat=new TextFormat();
formatTexte.font="Arial";
formatTexte.size=10;
formatTexte.color=0xa49281;
tableau[i].setTextFormat(formatTexte);
var sptTexte:Sprite=new Sprite();
sptTexte.addChild(tableau[i]);
sptTexte.addEventListener(MouseEvent.CLICK,action);
sptTexte.name="sptAction"+i;
sptTexte.buttonMode=true;
sptAction.addChild(sptTexte);
}

function action(evt:MouseEvent){
trace("ok");
}
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
4 avril 2010 à 21:47
si tu traces la propriété "buttonMode" de ton sprite, ça donne quoi ?

Peg'
0

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

Posez votre question
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
5 avril 2010 à 01:45
le "selectable" n'empêche pas l'interaction avec la main .. et donc le parasitage du curseur ...

Peg'
0
Rejoignez-nous