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 :

Modifier une public static var (var globale)


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 41
    Par défaut Modifier une public static var (var globale)
    Bonjour à tous,

    J'ai un souci de débutant qui concerne les variables globales.
    J'arrive bien à y accéder mais pas à la modifier depuis une fonction qui se trouve dans sa classe. Je cherche à charger un fichier XML (ça marche), puis une fois qu'il est chargé, l'insérer dans ma variable globale (la j'y arrive pas).

    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
    public class projetJeuAnglais extends MovieClip 
    {	
    	public static var phrases:XML; // ma variable globale
            ...
            public function chargeXml:void
            {
            // chargement du xml et ajout de l'ecouteur Event.COMPLETE
            chargeur.addEventListener(Event.COMPLETE, finDuChargement);
            }
    
             function finDuChargement ( event:Event ) 
    	{
    		var contenu:XML = new XML(event.target.data);
    		projetJeuAnglais.phrases = contenu; 
                   // pas d'erreur mais ma variable globale phrases n'est pas modifiée, si je la trace en dehors de cette fonction j'obtiens un null	
                 initJeu();
    	}
            function initJeu():void
            {
                 trace(projetJeuAnglais.phrases[0]);
                 // renvoit null
            }
    }
    Le problème est qu'une fois arrivé dans finDuChargement je n'arrive pas à modifier ma variable globale phrases pour pouvoir l'utiliser partout.

    Merci à vous de m'indiquer la démarche à suivre.

  2. #2
    Membre très actif

    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Par défaut
    Que donne :
    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
    public class projetJeuAnglais extends MovieClip 
    {	
    	public static var phrases:XML; // ma variable globale
            ...
            public function chargeXml:void
            {
            // chargement du xml et ajout de l'ecouteur Event.COMPLETE
            chargeur.addEventListener(Event.COMPLETE, finDuChargement);
            }
    
             function finDuChargement ( event:Event ) 
    	{
    		var contenu:XML = new XML(event.target.data);
    		projetJeuAnglais.phrases = contenu; 
    		trace("contenu"+contenu);
    		trace("projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    		trace( "phrases"+phrases);
                   // pas d'erreur mais ma variable globale phrases n'est pas modifiée, si je la trace en dehors de cette fonction j'obtiens un null	
                 initJeu();
    	}
            function initJeu():void
            {
                 trace(projetJeuAnglais.phrases[0]); 
    		trace("projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    		trace( "phrases"+phrases);
                 // renvoit null
            }
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 41
    Par défaut
    Rebonjour et merci, cela donne:

    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
    public class projetJeuAnglais extends MovieClip 
    {	
    	public static var phrases:XML; // ma variable globale
            ...
            public function chargeXml:void
            {
            // chargement du xml et ajout de l'ecouteur Event.COMPLETE
            chargeur.addEventListener(Event.COMPLETE, finDuChargement);
            }
    
             function finDuChargement ( event:Event ) 
    	{
    		var contenu:XML = new XML(event.target.data);
    		projetJeuAnglais.phrases = contenu;
    		trace("finDuChargement contenu"+contenu); //renvoit bien le contenu de mon fichier xml
    		trace("finDuChargement projetJeuAnglais.phrases"+projetJeuAnglais.phrases); //renvoit bien le contenu de mon fichier xml
    		trace("finDuChargement phrases"+phrases); //renvoit bien le contenu de mon fichier xml
                 initJeu();
    	}
            function initJeu():void
            {
                 trace(projetJeuAnglais.phrases[0]); 
    		trace("init projetJeuAnglais.phrases"+projetJeuAnglais.phrases); //renvoit null
    		trace( "init phrases"+phrases);  // renvoit null
                
            }
    }
    Peut-être est ce parce qu'il n'a pas fini de charger le xml et qu'il me renvoit null? Pourtant c'est en local et le fichier xml est petit.

    Au cas où voici le contenu affiché quand il m'affiche tout le fichier xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <root>
      <sentence>
        <good>I'm happy</good>
        <wrong1>I'm hapy</wrong1>
        <wrong2>I'm happi</wrong2>
      </sentence>
    </root>
    Merci de bien vouloir m'éclairer. =]

  4. #4
    Membre très actif

    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Par défaut
    pouvez vous tester :
    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
    public class projetJeuAnglais extends MovieClip 
    {	
    	public static var _phrases:XML;
    		public static function set phrases(val:XML):void {
    			trace("affection de " + val + " a _phrases");
    			try { throw new Error();
    			}catch (er:Error) {
    				trace("a" + er.getStackTrace());
    			}
    			_phrases = val;
    		}
    		public static function get phrases(  ) :XML{
    			return _phrases;
    		}
            ...
            public function chargeXml:void
            {
            // chargement du xml et ajout de l'ecouteur Event.COMPLETE
            chargeur.addEventListener(Event.COMPLETE, finDuChargement);
            }
    
             function finDuChargement ( event:Event ) 
    	{
    		var contenu:XML = new XML(event.target.data);
    		projetJeuAnglais.phrases = contenu;
    		trace("finDuChargement contenu"+contenu); //renvoit bien le contenu de mon fichier xml
    		trace("finDuChargement projetJeuAnglais.phrases"+projetJeuAnglais.phrases); //renvoit bien le contenu de mon fichier xml
    		trace("finDuChargement phrases"+phrases); //renvoit bien le contenu de mon fichier xml
                 initJeu();
    	}
            function initJeu():void
            {
                 trace(projetJeuAnglais.phrases[0]); 
    		trace("init projetJeuAnglais.phrases"+projetJeuAnglais.phrases); //renvoit null
    		trace( "init phrases"+phrases);  // renvoit null
                
            }
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 41
    Par défaut
    Rebonjour,

    Merci bien.

    Cela me renvoit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    affectation de <root>
      <sentence>
        <good>I'm happy</good>
        <wrong1>I'm hapy</wrong1>
        <wrong2>I'm happi</wrong2>
      </sentence>
    </root> a _phrases
    aError
    	at projetJeuAnglais$/set phrases()
    	at MethodInfo-5()
    	at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
    	at flash.events::EventDispatcher/dispatchEvent()
    	at flash.net::URLLoader/flash.net:URLLoader::onComplete()

  6. #6
    Membre très actif

    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Par défaut
    Citation Envoyé par pigeonus Voir le message
    Rebonjour,

    Merci bien.

    Cela me renvoit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    affectation de <root>
      <sentence>
        <good>I'm happy</good>
        <wrong1>I'm hapy</wrong1>
        <wrong2>I'm happi</wrong2>
      </sentence>
    </root> a _phrases
    aError
    	at projetJeuAnglais$/set phrases()
    	at MethodInfo-5()
    	at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
    	at flash.events::EventDispatcher/dispatchEvent()
    	at flash.net::URLLoader/flash.net:URLLoader::onComplete()
    hum vraiment étrange, la variable est bien définie au moment de la fin du chargement.
    A toute hazard, la variable étant local pourrait peut être être supprimée en changeant de scop, testez ceci : ( affectation dirrecte de la variable globale )
    projetJeuAnglais.phrases = new XML(event.target.data);;

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

Discussions similaires

  1. class: modifier une var d'instance avec une méthode
    Par jean-pat dans le forum Général Python
    Réponses: 5
    Dernier message: 29/09/2011, 15h25
  2. Modifier une variable static
    Par amine_smi dans le forum Langage
    Réponses: 7
    Dernier message: 19/03/2009, 14h58
  3. Problème pour modifier une variable globale
    Par supertom dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 07/06/2007, 18h00
  4. Réponses: 1
    Dernier message: 16/11/2006, 13h33
  5. Modifier une variable globale
    Par bahet dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/04/2006, 18h04

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