Forums Développement Multimédia

Aller au contenu

- - - - -

Flash AS 3 problème

CODE FLASH

7 réponses à ce sujet

#1 Ulrahid1

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 25 July 2017 - 16:48 PM

Bonjour à tous !

Je débute dans flash AS 3 et j'ai ce message : TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété.
at Main()


Merci de m'aider ! :)

Voici mon code :

package
{
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
       
        public class Main extends MovieClip
        {
                       
                var startPage:StartPage;
                var hillPage:HillPage;
                var pondPage:PondPage;
               
                public function Main()
                {
                        startPage = new StartPage();
                        hillPage = new HillPage();
                        pondPage = new PondPage();
                        addChild(startPage);
                       
                        //Add event listeners
                                               
                        startPage.pondButton.addEventListener(MouseEvent.CLICK, onPondButtonClick);
                        startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick);
                }
               
                //Event handlers
               
                function onHillButtonClick(event:MouseEvent):void
                {
                        addChild(hillPage);
                        removeChild(startPage);
                }
               
                function onPondButtonClick(event:MouseEvent):void
                {
                        addChild(pondPage);
                        removeChild(startPage);
                }
        }
}


Je précise que " startPage.pondButton.addEventListener(MouseEvent.CLICK, onPondButtonClick); " fonctionne
mais pas " startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick); "

#2 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6948 messages

Posté 25 July 2017 - 17:31 PM

Bonjour,

Ce message d'erreur t'indique qu'un objet (ou une de ses propriétés) est manquant ou inexistant lorsque que tu l'appelle dans la méthode "main()".

Donc ici :

                public function Main()
                {
                        startPage = new StartPage();
                        hillPage = new HillPage();
                        pondPage = new PondPage();
                        addChild(startPage);
                       
                        //Add event listeners
                                               
                        startPage.pondButton.addEventListener(MouseEvent.CLICK, onPondButtonClick);
                        startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick);
                }
 

Si tu as identifié que ton deuxième écouteur d'événement ne renvoie rien il semble que la ligne concernée soit :

startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick);

Sachant que l'écouteur du dessus fonctionne on peut donc dire que "startPage" existe bien au moment où tu l'appelle.
Reste : "hillButton".

Donc cet objet n'existe pas lorsque tu lance ta fonction "Main()".
A toi de vérifier pourquoi et de faire en sorte que cet objet existe bien avant d'essayer de coller un écouteur dessus.

Si tu es dans l'environnement Flash tu peux lancer le compilateur en mode Debug (CTRL+SHIFT+ENTER).
Lorsqu'une erreur survient ton programme se fige et la console t'indique à quelle ligne et parfois l'objet concerné.
Tu peux également ajouter des breakpoints en cliquant devant une ligne de ton code, en mode Debug le player va s'arrêter sur cette ligne et attendre que tu l'autorise à continuer le programme.

#3 Ulrahid1

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 25 July 2017 - 17:38 PM

Voir le messageMonsieur Spi, le 25 July 2017 - 17:31 PM, dit :

Bonjour,

Ce message d'erreur t'indique qu'un objet (ou une de ses propriétés) est manquant ou inexistant lorsque que tu l'appelle dans la méthode "main()".

Donc ici :

                public function Main()
                {
                        startPage = new StartPage();
                        hillPage = new HillPage();
                        pondPage = new PondPage();
                        addChild(startPage);
                       
                        //Add event listeners
                                               
                        startPage.pondButton.addEventListener(MouseEvent.CLICK, onPondButtonClick);
                        startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick);
                }
 

Si tu as identifié que ton deuxième écouteur d'événement ne renvoie rien il semble que la ligne concernée soit :

startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick);

Sachant que l'écouteur du dessus fonctionne on peut donc dire que "startPage" existe bien au moment où tu l'appelle.
Reste : "hillButton".

Donc cet objet n'existe pas lorsque tu lance ta fonction "Main()".
A toi de vérifier pourquoi et de faire en sorte que cet objet existe bien avant d'essayer de coller un écouteur dessus.


#4 Ulrahid1

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 25 July 2017 - 17:40 PM

Cela veut dire quoi que cet objet n'existe pas ?
Car j'ai créé un bouton qui s'appelle "HillButton"

Ops de ma part : en fait HillButton c'est une copie et le bouton s'appelle en fait "hillbutton", que j'ai corrigé en "hillButton". Merci !

#5 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6948 messages

Posté 25 July 2017 - 17:44 PM

Que cet objet n'a pas encore été créé ou que le compilateur n'a pas encore eu le temps de le créer avant que ta fonction Main soit exécutée.

Ou plus simplement que tu t'es trompé dans le nom d’occurrence que tu lui a donné et que du coup il ne cherche pas le bon objet.

Citation

Car j'ai créé un bouton qui s'appelle "HillButton"

startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick);

"hillButton" et "HillButton" ce n'est pas pareil...

Note : Si tu as une partie de ton programme créé "à la main" sur la timeline, ce genre d'erreur arrive très souvent, on ne maîtrise plus grand chose, il vaut mieux toujours créer les objets via le code quand on veut faire une application et pas juste une animation, ceci afin de s'assurer que l'objet est bien créé avant de chercher à l'utiliser.

Et bien sûr, quelque soit la méthode, toujours vérifier l'orthographe ;)

#6 Ulrahid1

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 25 July 2017 - 17:54 PM

Malheuresement je suis vraiment débutant et je n'ai jamais programmé auparavant donc j'ai du mal à tout comprendre dans tes réponses. J'utilise un livre pour débutant afin de débuter dans cet univers ^^
Mais grâce à tes réponses j'ai vérifié un peu partout et en-dehors du code lui même. Il s'avère que lorsque j'ai crée le hillButton, je l'avais appélé hillbutton sans majuscule, et maintenant ça fonctionne !
donc merci beaucoup !!!

#7 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6948 messages

Posté 25 July 2017 - 18:06 PM

On a tous débuté un jour ;)

Tu trouvera toutes les réponses ici : http://forums.mediab...x/flashplatform
A lire en priorité pour débuter, la bible de Thibeault Imbert : http://forums.mediab...on/pratique_as3
Puis les tutoriaux de cette partie : http://forums.mediab...m/programmation
Et enfin les jeux que tu trouvera dans ma signature en bas de mes posts.

Bon apprentissage :)

#8 Ulrahid1

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 25 July 2017 - 18:10 PM

Merci pour les liens et les réponses rapides et efficaces ça fait très plaisir ! bonne soirée à toi




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP