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 :

Héritage de classe // différence d'éxécution


Sujet :

ActionScript 3

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut Héritage de classe // différence d'éxécution
    Bonjour à tous,

    Je suis face à une problème. J'ai deux classe : classe1 et classe2

    classe2 hérite de classe1

    Seulement, j'ai des variables public dans classe1 qui sont traitées à l'intérieur de la classe1, à l'intérieur des différentes méthodes.

    Seulement, lorsque je veux utiliser ma variable public maVar dans le constructeur de ma classe2, celle ci ne tiens pas compte des modifications de la classe1, elle garde son information lorsque nous l'avons déclarée.

    Ma question, comment faire pour que maVar dans le constructeur de classe2 tienne compte des modifs de classe1 ?

    PS: J'ai tenté de faire un dispatchEvent à la fin de mes modifs dans classe1 et de récupérer les infos de maVar , mais j'obtiens une erreur...

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Bonjour,

    pas trop compris
    le mieux serait de joindre deux classes pour illustrer le problème.

  3. #3
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut

    au moment de l'appel du constructeur de classe2, les propriétés ne sont pas encore définis !
    la soluce la plus logique/propre est de passer par des get/set pour définir les propriétés publique (ce qui doit être fait de toute facon !) et si tu as besoin dans classe2 d'utiliser ces propriétés ou d'y appliquer des modifs, alors faut faire un override des get/set

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut
    Salut, merci des réponses.

    Même avec get ou set je suis obligé de mettre un dispatcher d'évènement pour récupérer ma valeur...

    Donc je vous donne un exemple :

    Classe1 :
    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
    package AS {
     
    	public class Classe1 extends MovieClip {
    		public var nbBoucle:int = 0;
     
    		public function Classe1()  
    		{
     
    			// Chargement des styles
    			var fichierXML:URLRequest = new URLRequest("monFichier.xml");// url du fichier chargé
    			chargementXML.load(fichierXML); 
    			// Chargement des variables XML
    			chargementXML.addEventListener(Event.COMPLETE, maFonction); 
    	  	}
     
                    private function maFonction()
                    {
                      nbBoucle = 5;
                    }
      }
    }
    Classe2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package AS {
     
    	public class Classe2 extends Classe1 {
     
    		public function Classe2()  
    		{
    			trace(nbBoucle);
                           // Sortie -> 0
    	  	}
      }
    }
    Le problème à mon avis, c'est que le chargement du XML prend du temps, et il faudrait donc charger Classe2 après que Classe1 soit totalement exécute...?

  5. #5
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    et pourquoi as tu besoin de nbBoucle dans le constructeur de la classe ?

    si tu ne peux pas t'en passer, suffit de decaler l'ini de Classe2 au moment ou nbBoucle est initialisé.


    et OUI : tu es obligé d'utiliser les evenements des que tu dois récupérer des données externe.

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut
    Ben enfaite nbBoucle est généré grâce à une donnée dans le xml chargé dans classe1.

    Le problème, quand je distach un event du côté de la classe1 et que je tente de le récupérer dans le constructeur de la classe2, impossible...

    En gros j'ai ajouté ça en dessous de nbBoucle=5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dispatchEvent(new Event(Classe1.TEST));
    Dans le constructeur de classe2, je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var classe1:Classe1 = new Classe1();
    classe1.addEventListener(Classe1.TEST, function(){trace(nbBoucle)});
    L'erreur ressortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut
    J'ai trouvé une solution de remplacement pour palier au problème.

    En effet, ma classe2 n'hérite plus de ma classe1.

    J'instancie ma classe1 dans mon flash. Cette classe à la fin de son traitement diffuse un évènement avec eventDispatcher.

    Dans l'animation on ajoute un écouteur d'évènement pour l'évènement diffusé dans la classe1.

    Lorsque cet évènement est reconnu par l'écouteur, on lance l'instanciation de la classe2 avec des paramètres venant de la classe1.

    Du coup les deux classes sont gérées indépendamment.

Discussions similaires

  1. conflit d'inclusions et Héritage de classe
    Par gedeon555 dans le forum C++
    Réponses: 7
    Dernier message: 01/10/2006, 19h48
  2. [POO] Problème héritage des classes PHP4
    Par zana74 dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2006, 16h00
  3. Héritage de classes.
    Par Berzerk_ dans le forum C++
    Réponses: 48
    Dernier message: 13/08/2006, 23h48
  4. [POO] Héritage vs classe dans une classe
    Par robichou dans le forum Langage
    Réponses: 4
    Dernier message: 06/08/2006, 23h51
  5. [OO] Héritage - Mixins Classes
    Par djmalo dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 01/03/2005, 23h16

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