begin process at 2012 05 27 06:39:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Création dynamiquede menu dans une boucle AS3


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

Création dynamiquede menu dans une boucle AS3

vendredi 11 mars 2011 à 10:51:53 | Création dynamiquede menu dans une boucle AS3

fraktal

Bonjour,

je suis en train de devellopper un site dynamique en AS3 ( je ne gere pas la prog orienté objet donc le code n'es pas du tout parfait)

J'ai un soucis, lorsque je crée mes Menu_bouton, je n'ai que le dernier qui est actif :/ .
je pense que j'utilise mal la boucle mais je ne voie pas ou ...

Code ActionScript :

//import des classe
//-------------------------------------------------------------------------------
import gs.TweenMax;
import fl.motion.easing.*;
import flash.events.MouseEvent;
	import flash.display.Sprite;

//-------------------------------------------------------------------------------
// Chrgement XML
//-------------------------------------------------------------------------------

var xmlURL:URLRequest = new URLRequest("Donnee.xml");

var xmlLoader:URLLoader = new URLLoader(xmlURL);

xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);

function xmlLoaded(event:Event):void

{

var dataXML = XML(event.target.data);

//-------------------------------------------------------------------------------
// Chargement du fond
//-------------------------------------------------------------------------------

trace ("/Image/Acceuil/" + dataXML.@fond)

var conteneurFond:Loader = new Loader();
// url de l'image ou du swf à charge
var imageFond:URLRequest = new URLRequest("Image/Acceuil/" + dataXML.@fond);
// chargement de l'image ou du swf dans le conteneur
conteneurFond.load(imageFond);
// affichage du conteneur
this.addChild(conteneurFond);

//-------------------------------------------------------------------------------
//Placement acceuil
//-------------------------------------------------------------------------------

//Appel librairie Logo
var Logo:Logo_l = new Logo_l();
		this.addChild(Logo); 
		setChildIndex(Logo,this.numChildren-1);
		Logo.x = 485.5;
		Logo.y = -300;

//Appel librairie Bandeau
var Bandeau:Menu_bandeau_l = new Menu_bandeau_l();
		this.addChild(Bandeau);
		setChildIndex(Bandeau,this.numChildren-1);
		Bandeau.x = -1500;
		Bandeau.y = 446;
		//Bandeau.alpha = 0.4;
//Création du Menu
//trace (dataXML.Menu.@nom + "num" + dataXML.Menu.@numero)

var nbrTitres:Number;
nbrTitres=dataXML.children().length();

var Menu_tabl:Array = new Array();


for(var i:uint=0;i<nbrTitres;i++)

{

var formatMenu:TextFormat = new TextFormat();
    formatMenu.font="Tahoma";
    formatMenu.bold=false;
	formatMenu.size = 24;
	formatMenu.letterSpacing = 3;
	formatMenu.color=0xFFFFFA;

var Menu_texte:TextField=new TextField();
var Menu_bouton:MovieClip=new MovieClip();

//Menu_texte.height=40;
//Menu_texte.width=70;
Menu_texte.x=-25 + 225 *(i+1);
Menu_texte.y=0;
Menu_texte.selectable=false;
Menu_texte.autoSize = TextFieldAutoSize.LEFT;
Menu_texte.defaultTextFormat = formatMenu;
Menu_texte.text=dataXML.Menu[i].@nom;
//Nommage des menus
Menu_bouton.name =String(i+1);
// je rempli le tableau de nom


Menu_bouton.addChild(Menu_texte);
Bandeau.addChildAt(Menu_bouton,2);

Menu_tabl.push(Menu_bouton.name);

}

//Tween acceuil
stage.addEventListener(MouseEvent.MOUSE_OVER, plac_acc_logo);

function plac_acc_logo(evt:Event) {
	var plac_acc_logo:Timer = new Timer(500);

	plac_acc_logo.addEventListener(TimerEvent.TIMER,plac_acc_logo_t);
	plac_acc_logo.start();

	function plac_acc_logo_t(evt:TimerEvent) {
		
		TweenMax.to(Logo, 1, {x:485.5,y:95, ease:Back.easeOut});
		TweenMax.to(Bandeau, 2, {x:-83 ,y:446, ease:Back.easeOut});
	}
}
// Ecouteur Menu

Menu_bouton.addEventListener(MouseEvent.MOUSE_DOWN, click_menu);
function click_menu(evt:Event) {
	var click_menu:Timer = new Timer(2,1);

	click_menu.addEventListener(TimerEvent.TIMER,click_menu_t);
	click_menu.start();

	function click_menu_t(evt:TimerEvent) {
		
			
		var Menu_bouton_nom:int = Menu_tabl.indexOf(evt.currentTarget);
		//trace (evt.currentTarget + "et le tabl retourne" + Menu_bouton_nom);
		trace(Menu_bouton.name);
		
	}
}



//Menu_tabl.push(dataXML.Menu.@numero);


}



Merci beaucoup
vendredi 11 mars 2011 à 12:12:54 | Re : Création dynamiquede menu dans une boucle AS3

pegase31

Membre Club Administrateur CodeS-SourceS
bonjour,

Déjà, quand je vois un timer et une fonction déclarées dans une autre fonction, je me dit qu'il y a forcément un binz ...

Peg'
vendredi 11 mars 2011 à 15:32:51 | Re : Création dynamiquede menu dans une boucle AS3

fraktal

Salut Peg,

Les Timers je les ai viré, j'ai suivis pas mal de tes conseils via ce topic

http://www.flashkod.com/forum/sujet-AS3-CREATION-DYNAMIQUE-BOUTONS-LEUR-ECOUTEUR-RESPECTIF_1419405.aspx

Mais mon tableau me retourne toujours -1 :/ comme pour vedelvetsyn

lorsque je trace (evt.currentTarget + "et le tabl retourne" + Menu_bouton_nom);


Merci beaucoup
vendredi 11 mars 2011 à 15:54:23 | Re : Création dynamiquede menu dans une boucle AS3

pegase31

Membre Club Administrateur CodeS-SourceS
c'est normal, puisqu'un TimerEvent n'a pas de cible.
D'ailleurs, je ne comprend pas ce que tu cherches à faire avec tes Timers.

Peg'
vendredi 11 mars 2011 à 15:58:50 | Re : Création dynamiquede menu dans une boucle AS3

fraktal

Ben c'est une mauvaise habitude que j'ai prise en suivant des tuto sur les écoutuers ou ils utilisait des Timer
mais le probleme ne vient pas de la, je les ai viré depuis mais il n'y a que le dernier movieclip créé qui fonctionne ( j'ai les texte sur tous mai l'ecouteur click ne fonctionne que sur le dernier

mon code sans les timers :

Code ActionScript :
//import des classe
//-------------------------------------------------------------------------------
import gs.TweenMax;
import fl.motion.easing.*;
import flash.events.MouseEvent;
	import flash.display.Sprite;

//-------------------------------------------------------------------------------
// Chrgement XML
//-------------------------------------------------------------------------------

var xmlURL:URLRequest = new URLRequest("Donnee.xml");

var xmlLoader:URLLoader = new URLLoader(xmlURL);

xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);

var dataXML = XML(xmlLoader);

function xmlLoaded(event:Event):void

{

dataXML = XML(event.target.data);


//-------------------------------------------------------------------------------
// Chargement du fond
//-------------------------------------------------------------------------------

trace ("/Image/Acceuil/" + dataXML.@fond)

var conteneurFond:Loader = new Loader();
// url de l'image ou du swf à charge
var imageFond:URLRequest = new URLRequest("Image/Acceuil/" + dataXML.@fond);
// chargement de l'image ou du swf dans le conteneur
conteneurFond.load(imageFond);
// affichage du conteneur
this.addChild(conteneurFond);

//-------------------------------------------------------------------------------
//Placement acceuil
//-------------------------------------------------------------------------------

//Appel librairie Logo
var Logo:Logo_l = new Logo_l();
		this.addChild(Logo); 
		setChildIndex(Logo,this.numChildren-1);
		Logo.x = 485.5;
		Logo.y = -300;

//Appel librairie Bandeau
var Bandeau:Menu_bandeau_l = new Menu_bandeau_l();
		this.addChild(Bandeau);
		setChildIndex(Bandeau,this.numChildren-1);
		Bandeau.x = -1500;
		Bandeau.y = 446;
		//Bandeau.alpha = 0.4;
//Création du Menu
//trace (dataXML.Menu.@nom + "num" + dataXML.Menu.@numero)

var nbrTitres:Number;
nbrTitres=dataXML.children().length();

var Menu_tabl:Array = new Array();


for(var i:uint=0;i<nbrTitres;i++)

{
//formatage texte
var formatMenu:TextFormat = new TextFormat();
    formatMenu.font="Tahoma";
    formatMenu.bold=false;
	formatMenu.size = 24;
	formatMenu.letterSpacing = 3;
	formatMenu.color=0xFFFFFA;

var Menu_texte:TextField=new TextField();
var Menu_bouton:MovieClip=new MovieClip();

//Menu_texte.height=40;
//Menu_texte.width=70;
Menu_texte.x=-25 + 225 *(i+1);
Menu_texte.y=0;
Menu_texte.selectable=false;
Menu_texte.autoSize = TextFieldAutoSize.LEFT;
Menu_texte.defaultTextFormat = formatMenu;
Menu_texte.text=dataXML.Menu[i].@nom;
//Nommage des menus
Menu_bouton.name =String(i+1);
// je rempli le tableau de nom


Menu_bouton.addChild(Menu_texte);
Bandeau.addChildAt(Menu_bouton,2);

Menu_tabl.push(Menu_bouton.name);

}

//Tween acceuil
stage.addEventListener(MouseEvent.MOUSE_OVER, plac_acc_logo);

function plac_acc_logo(evt:Event) {
			
		TweenMax.to(Logo, 1, {x:485.5,y:95, ease:Back.easeOut});
		TweenMax.to(Bandeau, 2, {x:-83 ,y:446, ease:Back.easeOut});

}
// Ecouteur Menu

Menu_bouton.addEventListener(MouseEvent.MOUSE_DOWN, click_menu);
function click_menu(evt:Event) {
		
			
		var Menu_bouton_nom:int = Menu_tabl.indexOf(evt.currentTarget);
		trace (evt.currentTarget + "et le tabl retourne" + Menu_bouton_nom);
		trace(Menu_bouton.name);
		
	}




//Menu_tabl.push(dataXML.Menu.@numero);


}


Merci de ton aide
vendredi 11 mars 2011 à 16:20:12 | Re : Création dynamiquede menu dans une boucle AS3

pegase31

Membre Club Administrateur CodeS-SourceS
normal aussi, puisque tu places les noms de tes boutons dans le tableau .. pourquoi ne places-tu pas directement les boutons dans ce tableau ?

Peg'
vendredi 11 mars 2011 à 16:29:39 | Re : Création dynamiquede menu dans une boucle AS3

fraktal

En effet >< du coup le tableau me retourne maintenant la bonne valeur mais le seul bouton fonctionnel reste le dernier :/ et la dessus je pense que soit c'est une variable créé au mauvais endroit mais je ne voie pas, je créé mes boutons dans la boucle, mon tableau avant le boucle

Ou alors ce la viens du l'imbrication de mon texte dans un movieClip mais le dernier fonctionne donc logiquement c'est tout bon ...

Merci
vendredi 11 mars 2011 à 16:37:49 | Re : Création dynamiquede menu dans une boucle AS3

pegase31

Membre Club Administrateur CodeS-SourceS
c'est parce que tu as placé ton écouteur en dehors de ta boucle. Il faut que tu places un écouteur sur chaque bouton, et pas juste sur le dernier créé.

Peg'
vendredi 11 mars 2011 à 16:52:26 | Re : Création dynamiquede menu dans une boucle AS3

fraktal

Yes ,

J'aurais y penser V___V" mais bon les reflexes de code c'est dur à entrer

du coup le tableau me retourne les bonne valeur pour tous les boutons, les écouteur fonctionne sur tout les boutons mais il renvoient tous vers le meme objet ( le dernier) je vais essayer de les différencier avec une autre variable ou alr avec un switch enfin je ne sais pas trop . En tout cas merci pour ton aide précieuse.
vendredi 11 mars 2011 à 16:59:01 | Re : Création dynamiquede menu dans une boucle AS3

pegase31

Membre Club Administrateur CodeS-SourceS
on est là pour ça ;)

Peg'

1 2

Cette discussion est classée dans : bouton, menu, var, logo, bandeau


Répondre à ce message

Sujets en rapport avec ce message

menu style mac [ par robertours ] Salut, je tente actuellement d'uitiliser un menu au design mac.Pour les icones de gauche, tout se passe a peu près bien, mais si on approche du menu p comment demarrer un clip a partir d'1 bouton????? [ par mikiky ] bonjour, voila g creer un site en flash, et j'ai creer un menu avec 4 boutons ; chaques boutons doit ouvrir un autre menu, avec mes liens finaux, par bouton precedent offline [ par stepao20 ] Je veux faire un cd rom sous flash mx 2004 destiné à une utilisation offline, il se compose de plusieurs sequence dont une qui sera un menu. Je voudra boutons déroulant [ par Kidbliss ] Salut tt le monde!!J'ai une page html qui compte quatre frames : 1 bandeau supérieur et 3 colonnes en dessous. Je veux mettre des boutons Flash dans l UN BOUTON DANS UN CLIP LUI MEME DANS UN CLIP [ par zoukozouko ] j'ai un bouton dans un clip menu2.ce menu2 est dans un clip menu.si je met un bouton b1 dans menu (_root.menu.b1), il est actif et clikable.Si je le m Rollover rollout qui s'accade si le curseur passe trop vite sur le bouton [ par yam12r ] bonjour a tous, j'explique mon anim c'est un bouton et un menu déroulant, qd je passe le curseur sur le bouton le menu déroule qd le curseur part du b variables globales ??? [ par tnnt ] bonjour ,j'ai un problème au niveau de mon menu, je m'explique :dans la seq1, le menu est composé de plusieurs boutons,voici le code associé à chaque Qui sait modifié le texte d'un menu bouton ? [ par hackoustik ] Voila le menu en Flash que j'ai, mais je ne comprend rien en flash, et qd je modifi un choix de menu, tout ce modifi, si kelk1 sait comment faire sa m bouton en mouvement continu [ par jkiffer ] Bonjour, je débute dans Flash et j'ai soucis avec un bouton . J'ai créé un menu où les différent boutons renvoient à différentes frames de ce menu. Je insertion de séquence [ par noupha ] Salut à tous,Quelqu'un serait-il en mesure de me dire pourquoi cela ne fonctionne pas : dans séquence 1 : je veux mettre en place un menu déroulant,


Nos sponsors


Sondage...

Comparez les prix

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 : 6,318 sec (3)

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