Problème avec chapitre 11 T.Imbert/ accéder à une occurence qui est sur image 20
Bonjour,
j'ai besoin pour un projet un peu particulier de laisser les occurences sur la scène et de pouvoir les atteindre quand même.
J'insiste sur le fait que la contrainte est de ne pas ajouter ou enlever les occurences dynamiquement.
Après avoir lu le tutorial de T.Imbert, je me suis servie de son code du chap.11 rubrique "ajouter des fonctionnalités".
ça marche, mais malheureusement il y a un bug.
j'ai mis un test en pièce jointe...
Il y a deux boutons de menu et ensuite 1 bouton pour chaque rubrique.
Si j'appuie sur le bouton accueil 1 fois, puis sur le bouton en dessous, je trace bien 1 fois le texte demandé.
Mais si je ré-appuie sur le bouton accueil, puis à nouveau sur le bouton en dessous, je trace maintenant 2 fois le texte demandé.
ainsi de suite, si j'appuie une troisième fois sur le bouton accueil, puis à nouveau sur le bouton en dessous, je trace maintenant 3 fois le texte demandé... etc...
C'est un test simplifié, mais pour le projet dans son ensemble ça créer des gros bug de dupliquer comme ça les éléments.
Je mets ici le code, en plus de la pièce jointe.
J'espère que quelqu'un pourra m'éclairer sur ce bug et trouvera au moins un début de solution car là, moi je sèche vraiment...
Merci d'avance :)
Emilie
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| package Classes{
import flash.display.*;
import flash.events.*;
public class MainClass extends MovieClip {
// variable permettant lexécution de la fonction de rappel
private var rappel:Function;
public function MainClass() {
// on écoute quel bouton du menu principal est cliqué
btnAccueil.addEventListener( MouseEvent.MOUSE_DOWN, versAccueil );
btnPasaPas.addEventListener( MouseEvent.MOUSE_DOWN, versPasaPas );
//============================================================================= Accueil
function versAccueil( event ):void {
myGotoAndStop( "accueil", actifAccessibleAccueil );
//on supprime l'ecouteur de l'intro
btnAccueil.removeEventListener( Event.ENTER_FRAME, versAccueil );
function actifAccessibleAccueil():void {
//definition des écouteurs et des fonctions des boutons du menu Assistance
assistanceGlobal1.btnEmailAssistance.addEventListener( MouseEvent.MOUSE_DOWN, functEmailAssist );
function functEmailAssist( event:MouseEvent ):void {
trace( "functEmailAssistAccueil" );
}
}
}
//============================================================================= Pas a Pas
function versPasaPas( event:MouseEvent ):void {
// déplace la tête de lecture à l'étiquette
// lorsque tous les objets sont disponibles
// la fonction actifAccessible est déclenchée
myGotoAndStop( "pasapas", actifAccessiblePasaPas );
function actifAccessiblePasaPas():void {
//definition des écouteurs et des fonctions des boutons du menu Assistance
assistanceGlobal2.btnEmailAssistance.addEventListener( MouseEvent.MOUSE_DOWN, functEmailAssist );
function functEmailAssist( event:MouseEvent ):void {
trace( "functEmailAssistPasaPas" );
}
}
}
}// fin de la fonction main class
// ------- méthode de déplacement de la tête de lecture personnalisé
public function myGotoAndStop( pImage:String, pFonction:Function ):void {
// déplacement de la tête de lecture
gotoAndStop( pImage );
// retourne un objet permettant
rappel=pFonction;
// écoute de l'événement Event.RENDER
addEventListener( Event.RENDER, miseAJour );
// force la diffusion de l'événement Event.RENDER
stage.invalidate();
}
private function miseAJour( pEvt:Event ):void {
// nous tentons d'appeler la fonction de rappel
// si cela échoue, nous affichons un message d'erreur
// dans tout les cas, nous supprimons l'écoute de l'événement Event.RENDER
try {
rappel();
} catch (pErreur:Error) {
trace( "Erreur : La méthode de rappel n'a pas été définie" );
} finally {
removeEventListener( Event.RENDER, miseAJour );
}
}
}// fin de public class MainClass
}// fin du package |