Forums Développement Multimédia

Aller au contenu

[AS3] Récupérer l'instance ou le nom du bouton qui a été cliqué ✔

bouton instance cliqué as3 CODE Actionscript

6 réponses à ce sujet

#1 Xari

    Ceinture Blanche

  • Members
  • Pip
  • 14 messages

Posté 29 January 2012 - 10:46 AM

Bonjour à tous !

Je suis nouveau en Flash, et notamment en AS3 mais j'ai des connaissances dans la programmation (java/C etc...)

Mon problème est le suivant :

J'ai une scène avec plusieurs boutons et je souhaiterais que chaque bouton appelle une et une seule fonction qui redirige ensuite vers une autre fonction selon le bouton qui a été cliqué.

C'est pas très clair alors voilà mon code :


bouton_icone.addEventListener(MouseEvent.CLICK, jouer);
bouton_charge.addEventListener(MouseEvent.CLICK, jouer);
function jouer(evt:MouseEvent):void
{
switch (event.currentTarget.label)
{
  case "btn_icone" :
  sonicone.play();
  break;

  case "btn_charge" :
  soncharge.play();
  break;
}
 

Donc j'utilise event.currentTarget.label pour récupérer le label du bouton qui a été cliqué, pour ensuite faire un switch qui me permet de faire l'action correspondant au clic de ce bouton. Le problème c'est qu'avec ce code je déclenche une erreur :

1120 : Access of undefined property event.
sur la ligne
"switch (event.currentTarget.label)"

Je ne comprends donc pas pourquoi et je fais appel à vos lumières !


Autre question qui me permettrai d'éviter ça : est ce que je peux sur un addEventListener appeler une fonction avec paramètres ?

Exemple :

au lieu d'avoir :

bouton_icone.addEventListener(MouseEvent.CLICK, jouer);
...
function jouer(evt:MouseEvent):void

je veux avoir un truc du genre :

bouton_icone.addEventListener(MouseEvent.CLICK, jouer(1));
...
function jouer(evt:MouseEvent, nombre:int):void
 

j'appelle jouer avec comme paramètre d'entrée un int, qui me permet de distinguer quel bouton a appellé la fonction, ce qui règle mon problème.
Mais je n'ai pas réussi a faire un appel d'une telle fonction... Peut être une mauvaise syntaxe ?

Merci d'avance : ) !

#2 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 29 January 2012 - 10:50 AM


function jouer(evt:MouseEvent):void
{
switch (event.currentTarget.label)
{
 

evt n'est pas event ;)

#3 Xari

    Ceinture Blanche

  • Members
  • Pip
  • 14 messages

Posté 29 January 2012 - 11:05 AM

Wuuuut, quel idiot xD...

Bon, il n'y a plus d'erreur sur ça, par contre, quand je lance et que je clique sur un bouton j'ai ça :

ReferenceError: Error #1069: La propriété label est introuvable sur flash.display.SimpleButton et il n'existe pas de valeur par défaut.
 

Je me doute que ya un problème avec currentTarget.label, quand je fais un "ctrl + espace" a la fin de currentTarget. il ne me propose pas "label" donc je supose que ce n'est pas possible de récupérer le label ?

#4 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 29 January 2012 - 11:08 AM

Et si tu faisais des "faux boutons" en utilisant la propriété buttonMode de MovieClip et que tu associes à chaque clip (variable) le son à jouer ? (comme ici) ça te fait une ligne ds la fonction de rappel… pour peu que tu écoutes le contenant (parent) des boutons en phase de capture ça te fait aussi un seul écouteur (même tuto) ;)

Et enfin, Billy a commis un tuto sur comment lier des informations à des objets, qui pourrait t'intéresser ;) ici

bon dimanche ! :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#5 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 29 January 2012 - 11:12 AM

Voir le messageXari, le 29 January 2012 - 11:05 AM, dit :

ReferenceError: Error #1069: La propriété label est introuvable sur flash.display.SimpleButton et il n'existe pas de valeur par défaut.
 

effectivement, SimpleButton est une classe pas pratique du tout pour le code. Si tu veux choper l'étiquette il faut en passer par les états (upState, overState, downState et hitTestState ici)… pff… donc tant qu'à faire… cf message précédent ;)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#6 Xari

    Ceinture Blanche

  • Members
  • Pip
  • 14 messages

Posté 29 January 2012 - 11:20 AM

D'accord je vais regarder ça, merci : ).
Bon dimanche aussi :P.

#7 Xari

    Ceinture Blanche

  • Members
  • Pip
  • 14 messages

Posté 29 January 2012 - 13:21 PM

Re, finalement, j'ai gardé mes boutons pour le moment, en fait au lieu de récupérer le "label" j'ai récupéré le "name" donc l'instance du bouton, pour savoir quel bouton avait été cliqué ^^.

Cependant l'utilisation des MovieClips permet beaucoup plus de choses, je les utiliserais surement pour mon prochain travail !



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP