Tutoriel action Script 3 - 005


Dans le prolongement avec le tutorial (001 - 002 - 003 - 004)

3.2.1. Utiliser eventListeners?

Le concept de eventListeners est assez simple, à la simple déclaration dans le code qui instancie devrait écouter événement particulier et "avertir" lorsque cela se produit afin que nous puissions exécuter certaines fonctions.

Il ya un détail que nous avons à prendre en compte, certains événements ne sont pas soutenues par certains cas, par exemple, un événement keyPress ne sera jamais tiré dans une image. Qu'est-ce que je veux dire, c'est que comme je l'ai déjà dit, cela dépend sur les événements des organismes. Par exemple, nous voulons à l'utilisateur de cliquer avec la souris sur un bouton pour exécuter une fonction (funcao_a_executar), qui doit être appelé sans l'() (ce qui est des rares cas où la fonction peut (doit) être appelé sans l'()).

  MeuBotão1.addEventListener (MouseEvent.CLICK, funcao_a_executar); 
  :MouseEvent): void  { funcao_a_executar privée (event: MouseEvent): void ( 
  Trace ( "bouton") 
  ) 

Nous avons noté que 1 point très important, comme funcao_a_executar () est tiré d'un MouseEvent, elle doit recevoir les paramètres et les caractéristiques de cet événement (des informations sur l'exemple) juste si vous devez passer à recevoir le "père" de cet événement Dans ce cas, le "père" est le MouseEvent. Un argument très utile dans ce cas est la cible ou currentTarget indique que, dans l'exemple qui a tiré l'événement auquel nous avons accès, sans même connaître le nom de cette instance.

Un simple exemple:

Nous avons 2 boutons pour augmenter / diminuer la taille d'une image de 5 pixels, nous ferions bien:

  botao_aumenta.addEventListener (MouseEvent.CLICK, augmente); 
  botao_diminui.addEventListener (MouseEvent.CLICK, les diminutions); 
   { privés augmente (evt: MouseEvent): void ( 
  / / Pour savoir le nom de l'instance: 
  Trace ( "exemple:" + evt.target); 
  Imagem1.width + = 5; 
  ) 
   { privée diminue (evt: MouseEvent): void ( 
  / / Pour savoir le nom de l'instance: 
  Trace ( "exemple:" + evt.target); 
  Imagem1.width -= 5; 
  ) 

Le symbole + = -= ou sert à ajouter ou de réduire les valeurs de certaines variables / propriété.

Nous pouvons attribuer plusieurs eventListners le même sujet:

  meuBotão1.addEventListener (MouseEvent.CLICK, botao_click); 
  meuBotão1.addEventListener (MouseEvent.MOUSE_OVER, botao_rato_em_cima); 
  meuBotão1.addEventListener (MouseEvent.MOUSE_OUT, botao_rato_fora); 

toutes les fonctions et recevoir le même type d'événement:

   {} botao_click privé function (evt: MouseEvent): void () 
  {} botao_rato_em_cima privé function (evt: MouseEvent): void () 
  {} botao_rato_fora privé function (evt: MouseEvent): void () 

Enfin, nous pouvons éviter l'emploi de 3 fonctions, et la réutilisation du code en utilisant les paramètres transmis par l'événement, de savoir quel type de cas a été tiré (si tous sont «enfants» du même événement (MouseEvent)):

  meuBotão1.addEventListener (MouseEvent.CLICK, botao_evento); 
  meuBotão1.addEventListener (MouseEvent.MOUSE_OVER, botao_evento); 
  meuBotão1.addEventListener (MouseEvent.MOUSE_OUT, botao_evento); 

et fonction:

   { botao_evento privé function (evt: MouseEvent): void ( 
  / * En utilisant un commutateur de savoir quel type d'événement a été tiré, l'accès au 
  Type de paramètre evt * / 
  switch (evt.type) ( 
  MouseEvent.CLICK cas: 
  Trace ( "événement Click"); 
  break; 
  MouseEvent.MOUSE_OVER cas: 
  Trace ( "la souris sur l'événement"); 
  break; 
  MouseEvent.MOUSE_OUT cas: 
  Trace ( "Event MOUSE_OUT"); 
  break; 
  ) 
  ) 

Comme vous pouvez le voir, nous pouvons mettre quelques lignes de code et d'optimiser les résultats de la swf à l'aide de la fonction botao_evento pour faire face à tout type d'événements souris (MouseEvent).

Nous pouvons également utiliser des événements pour appeler des méthodes d'autres objets, en utilisant toujours une fonction, en utilisant la fonction sur le dessus:

  MouseEvent.CLICK cas: 
  meuBotao1.move (btn.x 5, btn.y +5); 
  break; 

Dans ce cas, nous appelons la méthode move () du bouton, c'est-à-dire le bouton qui devrait aller de 5px à droite et à 5px. Ce sera exécuté à chaque fois que l'utilisateur clique sur le bouton.

Enfin, nous pouvons encore faire oo bouton pour tirer un autre événement, qui entre maintenant dans les propriétés nationales dans le bouton et le forçant à tourner une manifestation interne, en utilisant la fonction sur le dessus, je veux que vous déplacez votre souris sur le bouton, qui est déclenché l'événement, cliquez sur le bouton:

  MouseEvent.MOUSE_OVER cas: 
  meuBotao1.dispatchEvent (nouveau MouseEvent (MouseEvent.CLICK)); 
  break; 

( MouseEvent.click )); Se mantivermos toda a nossa função em cima com o switch (retirando o MOUSE_OUT): à la ligne, j'ai dis à mon exemple / bouton (meuBotao1) à feu l'événement Click, pour que nous devons tirer de la vigueur à un nouvel événement, exactement égal à ce qui est en attente EventListener (meuBotão1.addEventListener (MouseEvent . CLIQUEZ)) indique également le type d'événement (MouseEvent), ou autrement Il a tiré de l'événement, mais rien ne se passe; meuBotao1.dispatchEvent (nouveau MouseEvent (MouseEvent.CLICK)); Si nous gardons toutes nos lumière avec l'interrupteur (suppression de la MOUSE_OUT):

   { botao_evento privé function (evt: MouseEvent): void ( 
  switch (evt.type) ( 
  MouseEvent.CLICK cas: 
  meuBotao1.move (btn.x 5, btn.y +5); 
  break; 
  MouseEvent.MOUSE_OVER cas: 
  meuBotao1.dispatchEvent (nouveau MouseEvent (MouseEvent.CLICK)); 
  break; 
  ) 
  ) 

Si cela se produit, vous passez la souris au-dessus ou cliquez sur le meuBotao1 être interprétée comme si elle cliqué, comme il sera déclenché en cas CLIQUEZ même dans les deux cas, ce qui cause meuBotao1 appel de la méthode. Move ();

Cela peut facilement comprendre la procédure suivante:

L'utilisateur passe la souris sur meuBotão1 plus -> Shoot cas MOUSE_OVER -> Le eventListner appelle la ligne botao_evento () -> cette fonction détecte l'événement comme MOUSE_OVER -> Exiger le bouton pour filmer l'événement CLICK -> la eventListner attire la ligne botao_evento () à nouveau -> cette fonction détecte l'événement comme CLICK -> Exécuter méthode. déplacer le bouton

Eh bien, maintenant, c'est pour tous ...

Serrer dans ses bras.

ccommons

http://creativecommons.org/licenses/by-nc-nd/3.0/deed.pt

version pdf temporairement indisponible.
Laissez un commentaire ou un trackback

4 Commentaires

  1. tideus
    14 juin 2008 à 4:34 am | Permalink

    Félicitations, grand tutoriel!

  2. sam
    28 août 2008 à 3:28 am | Permalink

    Ce n'est pas correct: addEventListner.
    Plus de oui: addEventListener.

  3. 28 août 2008 à 6:14 am | Permalink

    Good Sam, il est vrai ... combien de code a été écrit sans la validation, j'ai fini par commettre cette erreur sur l'ensemble du didacticiel a été ... d'être copié à partir d'un endroit à un autre ...

    corrigé!

    Merci et salutations.

  4. Maison de Roger
    28 août 2008 à 8:41 pm | Lien permanent

    Mario, comment voulez-vous associer un lien ou un bouton LinkBar?

    déjà essayé par le biais d'ActionScript, et mxml, mais n t donnant.

    pouvez-vous m'aider?

    merci.

Un Trackback

  1. [...] Le 9 Juin 2008 - 8:08 am Dans le prolongement avec le tutorial (001 - 002 - 003 - 004 - 005 - [...]

Laisser un commentaire

Votre e-mail n'est jamais publié ou partagé. Les champs obligatoires sont marqués d'un *