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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 l’exé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