AS3 Fonctions et ses parametres

Résolu
delyha Messages postés 13 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 10 juillet 2009 - 30 avril 2009 à 16:20
delyha Messages postés 13 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 10 juillet 2009 - 1 mai 2009 à 10:24
Bonjour,

Je suis debutant en AS3, j'ai debuter il y a 2 3 jours et j'ai besoin d'une petite explication.

voila la situation, j'ai crée un menu simple avec 2 bouton, et lorsque je clique sur un des boutons sa ma charge une nouvelle page html

j'ai fait ceci donc :

function allerA(evt:Event):void
{
navigateToURL(new URLRequest("?page=accueil"),"_parent");
}
bouton1.addEventListener("click", allerA);

sa marche tres bien ^^ pour un bouton...

vu qu'il y aura plusieurs bouton, je voulai qu'il y est qu'une seul fonction pour tout les boutons, et donc je met en paramettre une variable qui va changer le nom de la page (ex: ?page=laPage, ou laPage contien le nom de la page).

et donc a je bloque je n'arrive pas utiliser ma fonction avec le paramettre :

function allerA(a:String, evt:Event):void
{
navigateToURL(new URLRequest("?page=" + a),"_parent");
}

bouton1.addEventListener("click", allerA('accueil');

et on poura faire apres :

bouton2.addEventListener("click", allerA('contacte');
bouton3......
4......


Voila si quelqu'un peut m'éclairer

7 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
30 avril 2009 à 19:05
Bonsoir, Le paramètre evt:Event est faux car il s'agit d'un "MouseEvent" puisque c'est un bouton.

Ensuite, cet évènement permet justement de différencier l'origine du déclencheur de la fonction par : evt.currentTarget qui te donnera l'objet qui a déclenché l'évènement.
Une solution simple serait de donner un nom à tes boutons avec la propriété "name", tels que : bouton1.name = "accueil";

Ce qui te permettrait de faire un switch/case dans ta fonction :

switch (evt.currentTarget.name) {
case "accueil" : navigateToURL( ...
case "contact" : ...
}

Après, le mieux reste de passer via un XML, mais pour le moment, la solution que je te propose est la plus simple.

Peg'
3
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
30 avril 2009 à 21:48
dans ton cas, autant mettre simplement :

navigateToURL( new URLRequest("?page=" +evt.currentTarget.name),"_parent");

C'est plus rapide et pas besoin de switch/case;

Peg'
3
delyha Messages postés 13 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 10 juillet 2009
1 mai 2009 à 10:24
Vi effectivement, j'y avai pas pensser sur le coup s'est bien plus simple

correction:

function allerA(evt:Event):void
{
navigateToURL( new URLRequest("?page=" + evt.currentTarget.name),"_parent");
}

accueil.addEventListener("click", allerA);
offres.addEventListener("click", allerA);
contacte.addEventListener("click", allerA);
3
delyha Messages postés 13 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 10 juillet 2009
30 avril 2009 à 16:23
Oula ya un petit souci avec la presentation du message

^^'

vais essayer de changer sa
0

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

Posez votre question
delyha Messages postés 13 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 10 juillet 2009
30 avril 2009 à 16:24
Je suis debutant en AS3, j'ai debuter il y a 2 3 jours et j'ai besoin d'une petite explication.

voila la situation, j'ai crée un menu simple avec 2 bouton, et lorsque je clique sur un des boutons sa ma charge une nouvelle page html

j'ai fait ceci donc :

function allerA(evt:Event):void
{
navigateToURL(new URLRequest("?page=accueil"),"_parent");
}
bouton1.addEventListener("click", allerA);

sa marche tres bien ^^ pour un bouton...

vu qu'il y aura plusieurs bouton, je voulai qu'il y est qu'une seul fonction pour tout les boutons, et donc je met en paramettre une variable qui va changer le nom de la page (ex: ?page=laPage, ou laPage contien le nom de la page).

et donc a je bloque je n'arrive pas utiliser ma fonction avec le paramettre :

function allerA(a:String, evt:Event):void
{
navigateToURL(new URLRequest("?page=" + a),"_parent");
}

bouton1.addEventListener("click", allerA('accueil');

et on poura faire apres :

bouton2.addEventListener("click", allerA('contacte');
bouton3......
4......


Voila si quelqu'un peut m'éclairer
0
delyha Messages postés 13 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 10 juillet 2009
30 avril 2009 à 20:53
Merci bien, je vais essayer sa
0
delyha Messages postés 13 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 10 juillet 2009
30 avril 2009 à 21:23
impec, sa marche ^^

voila ce que j'ai fait :

function allerA(evt:Event):void
{
var page:String;
trace (evt.currentTarget.name);
switch (evt.currentTarget.name)
{
case "accueil": page = "accueil";
break;
case "offres": page = "offres";
break;
}
navigateToURL( new URLRequest("?page=" + page),"_parent");
trace (page);
}
accueil.addEventListener("click", allerA);
offres.addEventListener("click", allerA);
0
Rejoignez-nous