IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Problème avec chapitre 11 T.Imbert/ accéder à une occurence qui est sur image 20


Sujet :

ActionScript 3

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut 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 : 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

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Points : 234
    Points
    234
    Par défaut
    Salut,

    Test comme ça, j'ai juste séparé les fonctions imbriquées dans les autres :

    Edit : j'ai pas trouvé de fichiers en pièce jointes ! ou c'est moi qui voit rien

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    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( evt:MouseEvent ):void {
     
                    trace("toto");
     
                    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("--------------------------");
                            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 );
     
     
     
                }
     
     
            }// fin de la fonction main class
     
            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" );
                        }
     
     
            // ------- 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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci, ça marche, c'était tout bête comme d'habitude...
    je vais tester sur le projet entier...
    Sinon, je te redemanderais surement ton aide

    Pour la pièce jointe, finalement je ne l'avait pas mise car trop grosse pour ce forum, j'ai juste oublié de l'enlever de mon texte... trop pressée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Problème avec l'ajout d'un champ à une table qui résulte d'une requête
    Par ostrich95 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/03/2014, 19h12
  2. Réponses: 10
    Dernier message: 03/10/2007, 18h07
  3. Problème avec ma méthode de recherche dans une JList
    Par nicofromChina dans le forum Composants
    Réponses: 4
    Dernier message: 24/07/2007, 10h33
  4. Accéder à une variable qui est dans une string
    Par ploxien dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2007, 14h48
  5. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo