Bonjour,
Le principe en AS3 est toujours le même : un écouteur lance une fonction. En mots simples un écouteur est une espèce d'oreille sur la scène chargée d'écouter un événement. Lorsque cet événement se réalise, l'écouteur appelle la fonction qui lui est associée.
La plupart des codeurs écrivent l'écouteur puis la fonction. Perso je fais l'inverse mais bon les goûts et les couleurs....
Le code de Stéphane L fonctionne aussi comme cela :
//function nom de la fonction (valeurs de l'événement):pas de retour {
function surClick(evenement:Event):void{
//Les actions à faire
accueil_mc.gotoAndStop("2");
}
//L'écouteur
//nom du MovieClip auquel tu associes l'événement.addEventListener(Type d'événement.événement,fonction à exécuter)
accueil_mc.addEventListener(Mouse.Event,surClick)
//C'est plus sympa d'avoir la main sur le bouton non ?
accueil_mc.buttonMode=true;
Dans la vraie vie, il est rare d'avoir qu'un seul bouton ou objet à gérer. Dans le cas ou tu dois gérer x boutons sur la scène ou x Movieclip (MC), il faut s'organiser pour que le nombre de ligne de code reste constant quelque soit le nombre de bouton à gérer. C'est un des grands principes de la programmation.
Vieux proverbe informatique :
Moins de lignes de code tu auras moins de bugs chez le client il y aura 
En effet si tu as par exemple 1000 MC sur ta scène tu n'as pas forcément l'envie de copier coller 1000 fonctions et 1000 écouteurs.
PrincipeTu vas être confronté dans ta vie de codeur à 3 grands types de situation :
I - Un seul événement à gérer et x MC sur la scène devant réagir à cet événement par une seule et même action
C'est le cas typique d'une animation chute de neige ou autre .......
II - Un seul événement à gérer et x MC sur la scène devant réagir à cet événement en fonction du MC cliqué
C'est le cas d'un menu de site Web par exemple
III - Plusieurs événements à gérer et x MC sur la scène devant réagir à l'un des événements.
Lorsque tu souhaites par exemple prendre en main les états d'un bouton (normal, survol)
I - Un événement et x MCDans cette situation il faut faire une fonction et dans le corps de ton programme une boucle appelant cette fonction sur chaque MC que tu souhaites gérer.
Pour que cela fonctionne facilement il faut prendre soin de nommer l'ensemble des MC sur la scène avec un nom composé d'une partie fixe et d'une partie mobile. Préfère bt0, bt1.......brx à acceuil_mc, venir_mc etc.....
L'organisationSur ta scène, les MC nommés bt0, bt1,....btx en nom d'occurrence sur un calque. Sur un nouveau calque le code ActionScript
code//fonction pour afficher dans la fenêtre de sortie le nom du MC cliqué
function surClick(evenement:Event):void {
//Affiche le nom du MC sur lequel je viens de cliquer ou autre action a ta convenance
trace(evenement.currentTarget.name)
}
//////////////////////////////// corps du programme //////////////////////////////////////////////
//Boucle de création pour 4 boutons
for (var i:Number=0; i<4; i++)
{
//Nous voulons un curseur main sur les MC
this["bt"+i].buttonMode = true;
//Evenement click sur le MC
this["bt" + i].addEventListener(MouseEvent.CLICK, surClick);
}
II - Un événement et x MC devant réagir en fonction du MC cliquéIl faut juste, dans la fonction, prendre en main l'action a effectuer en fonction du bouton sur lequel le visiteur clique. Pour cela il faut utiliser un aiguillage (switch) pour réaliser une action spécifique en fonction du bouton activé. Le corps du programme ne change pas
La fonction devient donc :
//fonction pour afficher dans la fenêtre de sortie le nom du MC cliqué
function surClick(evenement:Event):void {
//En fonction du MC sur lequel je viens de cliquer
switch(evenement.currentTarget.name){
case "bt0":
//Actions pour le bouton 0 c'est par exemple le bouton accueil du site
trace("vous avez cliqué sur le bouton :"+evenement.currentTarget.name)
break
case "bt1":
//Actions pour le bouton 1 c'est par exemple le bouton contact du site
trace("vous avez cliqué sur le bouton :"+evenement.currentTarget.name)
break
case "bt2":
//Actions pour le bouton 2 c'est par exemple le bouton infos pratiques du site
trace("vous avez cliqué sur le bouton :"+evenement.currentTarget.name)
break
case "bt3":
//Actions pour le bouton 3
trace("vous avez cliqué sur le bouton :"+evenement.currentTarget.name)
break
}
}
III - Plusieurs événements et x MC sur la scène devant réagir à l'un des événements.Je souhaite par exemple prendre en compte les événements survol de la souris, quitter le survol et click sur un MC. Dans un tel cas, il est souhaitable de regrouper l'ensemble des écouteurs dans une fonction puis d'appeler cette fonction à partir d'une boucle. Cela améliore la lisibilité du code et te prépare par la suite à la notion d'eventDispacher.
Il faut aussi, pour des boutons, avoir 2 images clés dans le MC bouton. La première le bouton en état normal, la seconde le bouton au survol.
Nous allons donc avoir 3 grands blocs de code.
Les fonctions gérant les événements, la fonction regroupant les écouteurs, la boucle pour créer nos boutons.
//------------------------------------- Les fonctions sur les événements ------------------------------------
//Click
function surClick(evenement:Event):void {
//this fait référence au bouton actif
this.gotoAndStop(2)
//Affiche le nom du MC sur lequel je viens de cliquer
switch(evenement.currentTarget.name){
case "bt0":
//Actions pour le bouton 0
trace("vous avez cliquez sur le bouton :"+evenement.currentTarget.name)
break
case "bt1":
//Actions pour le bouton 1
trace("vous avez cliquez sur le bouton :"+evenement.currentTarget.name)
break
case "bt2":
//Actions pour le bouton 2
trace("vous avez cliquez sur le bouton :"+evenement.currentTarget.name)
break
case "bt3":
//Actions pour le bouton 3
trace("vous avez cliquez sur le bouton :"+evenement.currentTarget.name)
break
}
}
//Survol
function survol(evenement:Event):void {
//this fait référence au bouton actif
this.gotoAndStop(2)
trace("Vous survoler le bouton");
}
//Fin du survol
function finSurvol(evenement:Event):void {
//this fait référence au bouton actif
this.gotoAndStop(1)
trace("Vous quitter le bouton");
}
//---------------------------------------- le regroupement des écouteurs -------------------------------------
//BtActif est le MC sur lequel nous travaillons
function regroupeEcouteur(BtActif:MovieClip):void {
BtActif.addEventListener(MouseEvent.CLICK, surClick);
BtActif.addEventListener(MouseEvent.MOUSE_OVER, survol);
BtActif.addEventListener(MouseEvent.MOUSE_OUT, finSurvol);
//Affiche la main
BtActif.buttonMode=true;
}
//////////////////////////////// corps du programme //////////////////////////////////////////////
//Boucle de création pour 4 boutons
for (var i:Number=0; i<4; i++) {
this["bt"+i].gotoAndStop(1)
//Appel de la fonction de regroupement des écouteurs
regroupeEcouteur(this["bt"+i])
//Autres actions
}
Voilà bon courage dans ton apprentissage d'AS3