begin process at 2012 05 26 15:49:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

[AS3] Création dynamique de boutons et de leur écouteur respectif


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[AS3] Création dynamique de boutons et de leur écouteur respectif

vendredi 26 mars 2010 à 21:26:11 | [AS3] Création dynamique de boutons et de leur écouteur respectif

vedelvetsyn

Encore un problème...
j'entendais souvent que l'AS3 c'était super fastidieux, mais j'imaginais pas autant
Mais c'est sympa de se prendre la tête parfois, non ?

Bon, cette fois-ci mon problème est le suivant :

J'ai créé dynamiquement des boutons comme ceci ...

Code ActionScript :
for (i = 0; i < 100; i++) {
			
	// création des textes du bouton
	var normal:TextField = new TextField();
	var survol:TextField = new TextField();
	var clic:TextField = new TextField();
	normal.text = survol.text = clic.text = "bouton " + [i];

	// Le texte du survol sera de couleur rouge
	survol.textColor = 0xFF0000;
	// Le texte du clic sera de couleur bleue
	clic.textColor = 0x0000FF;
	// création de l'instance du bouton
	var unBouton:SimpleButton = new SimpleButton(normal, survol, clic, normal);
			
	// création le la dynamique de positionnement des bouton
	var baseY:Number = 100 ;
	var baseZ:Number = 0.2 * baseY * i ;
	var nouvY:Number = baseY + baseZ ;
	unBouton.x = 100 ;
	unBouton.y = nouvY ;
	
	// affichage du bouton
	addChild(unBouton);
}


Et j'aimerai faire en sorte que :
> quand je clique sur le bouton 0, il me renvoie la donnée a
> quand je clique sur le bouton 1, il me renvoie la donnée b
> quand je clique sur le bouton 2, il me renvoie la donnée c
... etc ...
Sachant que les données en question, provenant d'un xml, sont rangé dans un array tabGlobal[i] ...

Pour certain, l'évidence sautera aux yeux, mais bon, c'est pas mon cas . Par contre, j'ai essayé ça, toujours dans ma boucle :

Code ActionScript :
// je créé un écouteur pour le clic sur ce bouton
unBouton.addEventListener(MouseEvent.CLICK, affichInfos);
// et je définis ma fonction "affichInfos"
function affichInfos(pEvt:Event):void {
	trace (tabGlobal[i][1]);
}


... qui était censé me renvoyer une info, pour chaque clic sur un bouton, mais :
"TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété.
at MethodInfo-1()"

... quelqu'un a une lampe torche là ?.. parce que j'y vois plus rien ^^

Merci d'avance pour ceux qui auront le courage de supporter mes caprices
vendredi 26 mars 2010 à 21:38:55 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

pegase31

Membre Club Administrateur CodeS-SourceS
Bonsoir,

Dans ta fonction déclenchée lors du clic, qu'est-ce que "i" ?

Peg'
vendredi 26 mars 2010 à 21:54:11 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

vedelvetsyn

si c'est bien du i de "trace (tabGlobal[i][1]);" dont tu parles, c'est censé être le numéros de l'entrée dans mon tableau.

... j'aime pas ce genre de question.. c'est un piège ?
vendredi 26 mars 2010 à 21:56:31 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

pegase31

Membre Club Administrateur CodeS-SourceS
Aucun piège dans tout ça, mais tu le définis où ce numéro ? parce que l'erreur de flash vient bien de là ...

Peg'
vendredi 26 mars 2010 à 22:11:52 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

vedelvetsyn

En fait mon code est comme ceci...
Mon "i" est définit dans ma boucle, mais déclaré juste avant :

Code ActionScript :
var i:Number;
for (i = 0; i < 100; i++) {
			
	// création des textes du bouton
	var normal:TextField = new TextField();
	var survol:TextField = new TextField();
	var clic:TextField = new TextField();
	normal.text = survol.text = clic.text = "bouton " + [i];

	// Le texte du survol sera de couleur rouge
	survol.textColor = 0xFF0000;
	// Le texte du clic sera de couleur bleue
	clic.textColor = 0x0000FF;
	// création de l'instance du bouton
	var unBouton:SimpleButton = new SimpleButton(normal, survol, clic, normal);
			
	// création le la dynamique de positionnement des bouton
	var baseY:Number = 100 ;
	var baseZ:Number = 0.2 * baseY * i ;
	var nouvY:Number = baseY + baseZ ;
	unBouton.x = 100 ;
	unBouton.y = nouvY ;
	
	// affichage du bouton
	addChild(unBouton);

	// je créé un écouteur pour le clic sur ce bouton
	unBouton.addEventListener(MouseEvent.CLICK, affichInfos);
	// et je définis ma fonction "affichInfos"
	function affichInfos(pEvt:Event):void {
		trace (tabGlobal[i][1]);
	}
}



... c'est grave docteur ?
vendredi 26 mars 2010 à 22:44:57 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

pegase31

Membre Club Administrateur CodeS-SourceS
sauf que lors que ta fonction est déclarée, i n'existe plus ... donc "Un terme n'est pas défini et n'a pas de propriété".

En AS3, une fonction déclenchée par un Event peut savoir quel est l'élément qui le déclenche, avec Event.currentTarget.
Ce qui permet de faire une seule fonction pour X éléments et réagir en fonction de l'élément déclencheur.

Peg'
samedi 27 mars 2010 à 00:44:44 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

vedelvetsyn

hum... je comprend pas tout ...

Comment se fait-il que "i" n'existe plus à ce moment, puisqu'on est toujours dans la boucle dont "i" et un paramètre ?

Sinon, pour le "Event.currentTarget" il se placerai comme ceci ?
function affichInfos(pEvt:Event.currentTarget):void { ...
samedi 27 mars 2010 à 01:54:36 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

pegase31

Membre Club Administrateur CodeS-SourceS
Parce que tu crées ta fonction avec une variable .. qui n'est plus définie lorsque la fonction est appelée, puisque la boucle est finie lors de l'appel de cette fonction.
De plus, la définition de la fonction ne sert à rien dans la boucle, mais l'ajout de l'écouteur sur l'objet, si.

Pour la propriété event.currentTarget :

Code ActionScript :
function maFonction(evt:Event):void {
trace (evt.currentTarget); //cible l'objet qui initialise l'Event
}


Peg'
samedi 27 mars 2010 à 03:59:48 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

vedelvetsyn

ok, l'histoire du "i", je vois, en fait c'est trop logique

Mais j'essaye toujours de percer le brouillard qui m'entoure

Donc si j'ai bien compris....
la création de l'écouteur étant dans la boucle et la fonction dehors, je vais avoir autant d'écouteur que de bouton. Ils seront donc tous "greffé" sur l'unique fonction.
Par cette fonction, il faut donc que je vérifie sur quel bouton j'ai cliqué (avec le evt.currentTarget ?) pour savoir quelle info je vais envoyer...

Code ActionScript :
function affichInfos(evt:Event):void {
	trace (evt.currentTarget); // renvoie [objet SimpleButton]
}



... mais pour ça, il ne fraudait pas avoir des noms de boutons différents ?
genre monBouton1, monBouton2, etc...
ou alors j'suis totalement à côté de la plaque ...

*regarde l'heure* ... 4h ... ouai, mais bon, j'crois que c'est plus le moment de réfléchir la dessus... demain, il fera jour ^^
samedi 27 mars 2010 à 11:37:41 | Re : [AS3] Création dynamique de boutons et de leur écouteur respectif

pegase31

Membre Club Administrateur CodeS-SourceS
Pour avoir un nombre simplement, il suffit de placer tes boutons dans un tableau, puis de récupérer leurs index à l'aide de :

monTableau.indexOf(evt.currentTarget);

Peg'

1 2

Cette discussion est classée dans : bouton, boutons, code, écouteur, as3


Répondre à ce message

Sujets en rapport avec ce message

actionScript [ par petit_charlie ] J ai besoin d aide !!J aimerais faire des boutons qui "onRollOver" monte et quand "onRollOver" redescende.Au debut j ai fais une anim avec le bouton q bouton dans clip -> code sur les deux ? [ par ohm7 ] bonjour à tous, voilà le problème qui m'a occupé une journée entière ! j'ai un clip avec des champs txt à l'interieur, que je fais se comporter comme Bouton qui ne réagis pas maglré code AS3 [ par ayouns ] Salut, Voila j'ai fait un bouton en clip le tout en AS3 quand je code pas les "function" je vois très bien mon animation voulu comme bouton. Mais de [AS3] écouteur clavier ne fonctionnepas [ par carton99 ] Bonjour, je débute en AS3. dans le code suivant ,je ne comprend pas pourquoi l'écouteur clavier ne marche pas alors que l'écouteur enterframe fonctio Code AS3 pour lien vers autre page [ par clearup ] Bonjour, Je débute sur AS3 et tente de me lancer en créant un site perso, mon problème est le suivant : je recherche à faire des liens de mes boutons mailto associé à un bouton [ par louesque ] Bonjour, Sur Flash, en As2, j'écris le code suivant (trouvé sur plein de forum): this.monBouton.onRelease = function() { getURL("mailto:monmail@gmail Convertir un code AS2 en AS3 [ par Gingy ] Bonjour !! j'ai ce code qui fonctionne parfaitement en AS2 mais j'aimerais le modifier pour qu'il fonctionne en AS3 et étant assez nul en programmati Créer un bouton avec un mot de passe ... Besoin d'un prof :D [ par lilboho ] Salut, Je vous explique mon problème. Je m'y connais très peu en flash ou en tout cas en code pour remédier a sa j'ai décider de créer un site pour m Code précis [ par graphoa ] Bonjour/Bonsoir à tous ! Alors voila je cherche un code très précis. Je fais mon rapport de stage sur Flash CS3 en AS2. Je travaille avec 7 séquences Bouton supprimer [ par dragonCA ] Soit 4 Movie clip: mc_carré mc_rond mc_eclipse mc_triangle un bouton btn_delete C'est quoi le code pour que quand je clique sur l'un des clip il est s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales