AS3 Fonctions et ses parametres [Résolu]

Signaler
Messages postés
13
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
10 juillet 2009
-
Messages postés
13
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
10 juillet 2009
-
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

Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
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'
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
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'
Messages postés
13
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
10 juillet 2009

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);
Messages postés
13
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
10 juillet 2009

Oula ya un petit souci avec la presentation du message

^^'

vais essayer de changer sa
Messages postés
13
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
10 juillet 2009

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
Messages postés
13
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
10 juillet 2009

Merci bien, je vais essayer sa
Messages postés
13
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
10 juillet 2009

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);