Outils pour utilisateurs

Outils du site


cours2009:multimedia:projet_basique_menu_generalise

Projet basique : menu généralisé

Le TP sur les liens a mis en évidence le concept de propagation des événements. On peut également utiliser la propagation des événements pour les clics sur les boutons du menu.

En effet, les événements ”MouseEvent.CLICK” ont également la particularité de se propager vers les parents dans la hiérarchie d'affichage.

C'est l'occasion pour écrire une Classe qui sera associée à un symbole contenant tous les boutons. La mise en oeuvre de la navigation sera générique : un même code pour tous les boutons. Donc possibilité d'ajouter des boutons sans modifier le code.

Ce TP va mettre en oeuvre la notion de cible d'un événement (sur quel bouton l'utilisateur a fait un clic).

L'association entre un bouton est une page sera faite par la propriété ”name” qui contient le nom d'occurrence donné au bouton.

Remarque : comme il est nécessaire que la cible d'un “clic” soit le bouton et non un de ses enfants, on doit donc mettre la propriété mouseChildren de tous les boutons à false (ce qui est fait dans le TP d'animation des boutons).

Mise en place

Comme j'ai demandé que vous changiez les options de Flash pour qu'il ne déclare pas automatiquement les occurrences de scène, on serait obligé de déclarer les variables correspondantes à chaque bouton dans la Classe associé au symbole les contenants. Ce qui est contraire à notre objectif d'ajouter des boutons sans changer le code. Pour contourner le problème, l'on va placer les boutons dans un symbole qui n'a pas de Classe associée. Le code étant associé au symbole parent.

  • On va placer un Symbole “Menu” dans le symbole contenant l'application (ou un enfant).
    • “Menu” sera ensuite associé à la classe.
  • Dans “Menu” on place une occurrence d'un symbole “Menu boutons” qui reçoit les boutons
    • Cette occurrence sera nommée ”boutons”.
    • Il faudra déclarer la variable d'instance correspondante dans la Classe.
  • Dans “Menu boutons” on place les (occurrences des) boutons.
    • Chaque bouton aura un nom d'occurrence correspondant à la page qu'il doit permettre d'afficher.

L'explorateur d'animation est votre ami :

Reste à associer le symbole “Menu” à une Classe Menu. (Cette classe doit bien sûr être basée sur MovieClip).

Code ActionScript

Le principe est simple :

  • On écoute les événements MouseEvent.CLICK sur le parent des boutons (nommé boutons).
    • Si un clic survient sur un bouton, l'événement sera également diffusé par lui.
  • Quand un clic survient sur un bouton :
    • On utilise l'objet MouseEvent pour avoir plus d'information :
      • La propriété target contient ou l'événement s'est produit avant d'avoir été propagé (vers les parents).
    • Une fois connut la vraie “cible” de l'événement :
      • On lui demande son nom : propriété name contenant le nom d'occurrence donné dans Flash IDE.
    • On utilise cette chaine de caractères pour demander à l'application de l'afficher.

C'est plus simple à coder qu'à dire :

Code plus robuste

Pour éviter d'éventuels problèmes, on peut vérifier que la cible est un enfant “direct” de boutons.

Bonus pour les bons

Si on a utilisé une Classe de base pour les boutons. On peut aussi mettre ce “comportement” (méthode) dans cette Classe :

  • “Quand on clic on va à la page correspondant au nom (d'occurrence)”
  • On utilise alors l'héritage (et non la propagation des événements) :
    • Une Classe “hérite” des “comportements” de ses parents.
cours2009/multimedia/projet_basique_menu_generalise.txt · Dernière modification: 2010/05/14 22:00 (modification externe)