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

  1. #1
    Membre à l'essai
    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
    Points : 21
    Points
    21
    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 éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    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 à l'essai
    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
    Points : 21
    Points
    21
    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 éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    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 à l'essai
    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
    Points : 21
    Points
    21
    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 éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    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);;

  7. #7
    Membre éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    Par défaut
    Y'as peut être un conflit d'application domaine
    Vous utilisez qu'elle type d'object pour charger votre fichier xml ?
    a première vue c'est un URLLoader. donc normalement pas de problème d'application domaine

  8. #8
    Membre à l'essai
    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
    Points : 21
    Points
    21
    Par défaut
    Je viens d'essayer mais je reçois exactement la même chose en sortie que dans mon message précèdent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    projetJeuAnglais.phrases = new XML(event.target.data);
    Pour ma variable globale je n'ai pas créé d'autre classe pour la stocker, je l'ai directement intégré à mon code. Cela pourrait venir de la?

    Voici mon code en entier si jamais une idée vous viens à l'esprit. Merci encore d'avoir consacré du temps à mon souci.

    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
    105
    106
    107
    108
    package {
    	import flash.net.URLLoader;
    	import flash.net.URLLoaderDataFormat;
    	import flash.net.URLRequest;
    	import flash.events.Event;
    	import flash.events.ProgressEvent;
    	import flash.events.IOErrorEvent;
    	import flash.display.MovieClip;
    	
    	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;
    		}
    
    	
    	/******************************************
    					    Main
    	******************************************/
    	
    		public function projetJeuAnglais():void //fonction constructrice
    		{
    			stage.addEventListener(Event.ENTER_FRAME, init);// ajout d'un écouteur ENTER_FRAME qui execute la fonction onEnterFrame
    		}
    		
    		public function init(event:Event):void  // fonction qui s'execute au lancement de l'animation
    		{
    			chargeXML();// fonction qui appelle le xml
    			stage.removeEventListener(Event.ENTER_FRAME, init);// on retire l'écouteur EnterFrame pour ne pas créer une boucle infinie 
    			//trace(phrases);
    			//trace("init projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    			//trace("init phrases"+phrases);
    			//trace(projetJeuAnglais._phrases);
    		}
    	
    	/******************************************
    					Gestion du XML
    	******************************************/
    	
    		public function chargeXML():void
    		{
    			// nous déclarons un objet URLLoader :
    			var chargeur:URLLoader = new URLLoader ();
    			
    			// nous créons un objet URLRequest qui contient l'url du fichier :
    			var adresse:URLRequest = new URLRequest ("./sentences/sentences.xml");
    			
    			// nous définissons le format du fichier chargé :
    			var format = URLLoaderDataFormat.TEXT;
    			chargeur.dataFormat = format;
    			
    			// nous lançons le chargement du fichier, en indiquant l'adresse de celui ci par l'objet URLRequest :
    			chargeur.load(adresse);
    			
    			// définition des évenements de l'objet chargeur
    			chargeur.addEventListener(Event.COMPLETE, finDuChargement);
    			chargeur.addEventListener(ProgressEvent.PROGRESS, avancement);
    			chargeur.addEventListener(IOErrorEvent.IO_ERROR, indiquerErreur);
    			
    			// définition de la fonction exécutée par l'évenement COMPLETE :
    			// ( déclenchée lorsque le chargement se termine )
    			function finDuChargement ( event:Event ) 
    			{
    				//var contenu:XML = new XML(event.target.data);
    				//contenu:XML = new XML(event.target.data);
    				//contenu = event.target.data;
    				//var contenu:XML = new XML(event.target.data);
    				projetJeuAnglais.phrases = new XML(event.target.data);
    				//projetJeuAnglais.phrases = contenu;
    				//trace("finDuChargement contenu"+contenu);
    				//trace("finDuChargement projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    				//trace("finDuChargement phrases"+phrases);				
    				//setPhrases(phrases);
    				
    				
    				//GestionXml.GestionXml.phrases = "loli";
    				//this.this.phrases = contenu;
    				//trace("chargement finit ! "+contenu);
    				//trace(contenu.sentence[0].good);
    				//trace(contenu.sentence[0]);
    			}
    			
    			// définition de la fonction éxecutée par l'évenement PROGRESS :
    			// déclenchée à chaque avancement du chargement )
    			function avancement(event:Event) 
    			{
    				//trace(event.bytesLoaded+" chargés sur "+event.bytesTotal);
    			}
    			
    			// fonction indiquant si une erreur de chargmement survient :
    			function indiquerErreur(event:Event)
    			{
    				//trace(event);
    			}
    			
    		}
    	}
    };

  9. #9
    Membre éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    Par défaut
    Avec la version suivante ?
    package {
    import flash.net.URLLoader;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
    import flash.display.MovieClip;

    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;
    }


    /******************************************
    Main
    ******************************************/

    public function projetJeuAnglais():void //fonction constructrice
    {
    stage.addEventListener(Event.ENTER_FRAME, init);// ajout d'un écouteur ENTER_FRAME qui execute la fonction onEnterFrame
    }

    public function init(event:Event):void // fonction qui s'execute au lancement de l'animation
    {
    chargeXML();// fonction qui appelle le xml
    stage.removeEventListener(Event.ENTER_FRAME, init);// on retire l'écouteur EnterFrame pour ne pas créer une boucle infinie
    //trace(phrases);
    //trace("init projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    //trace("init phrases"+phrases);
    //trace(projetJeuAnglais._phrases);
    }

    /******************************************
    Gestion du XML
    ******************************************/

    public function chargeXML():void
    {
    // nous déclarons un objet URLLoader :
    var chargeur:URLLoader = new URLLoader ();

    // nous créons un objet URLRequest qui contient l'url du fichier :
    var adresse:URLRequest = new URLRequest ("./sentences/sentences.xml");

    // nous définissons le format du fichier chargé :
    var format:String = URLLoaderDataFormat.TEXT;
    chargeur.dataFormat = format;

    // nous lançons le chargement du fichier, en indiquant l'adresse de celui ci par l'objet URLRequest :
    chargeur.load(adresse);

    // définition des évenements de l'objet chargeur
    chargeur.addEventListener(Event.COMPLETE, finDuChargement);
    chargeur.addEventListener(ProgressEvent.PROGRESS, avancement);
    chargeur.addEventListener(IOErrorEvent.IO_ERROR, indiquerErreur);


    }
    // définition de la fonction exécutée par l'évenement COMPLETE :
    // ( déclenchée lorsque le chargement se termine )
    public function finDuChargement ( event:Event ):void
    {
    //var contenu:XML = new XML(event.target.data);
    //contenu:XML = new XML(event.target.data);
    //contenu = event.target.data;
    //var contenu:XML = new XML(event.target.data);
    projetJeuAnglais.phrases = new XML(event.target.data);
    //projetJeuAnglais.phrases = contenu;
    //trace("finDuChargement contenu"+contenu);
    //trace("finDuChargement projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    //trace("finDuChargement phrases"+phrases);
    //setPhrases(phrases);


    //GestionXml.GestionXml.phrases = "loli";
    //this.this.phrases = contenu;
    //trace("chargement finit ! "+contenu);
    //trace(contenu.sentence[0].good);
    //trace(contenu.sentence[0]);
    }

    // définition de la fonction éxecutée par l'évenement PROGRESS :
    // déclenchée à chaque avancement du chargement )
    public function avancement(event:Event) :void
    {
    //trace(event.bytesLoaded+" chargés sur "+event.bytesTotal);
    }

    // fonction indiquant si une erreur de chargmement survient :
    public function indiquerErreur(event:Event):void
    {
    //trace(event);
    }

    }
    };
    vous pouvez aussi inversé l'ajout des listener et le lancement du chargement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // définition des évenements de l'objet chargeur
    chargeur.addEventListener(Event.COMPLETE, finDuChargement);
    chargeur.addEventListener(ProgressEvent.PROGRESS, avancement);
    chargeur.addEventListener(IOErrorEvent.IO_ERROR, indiquerErreur);
     
    // nous lançons le chargement du fichier, en indiquant l'adresse de celui ci par l'objet URLRequest :
    chargeur.load(adresse);

  10. #10
    Membre à l'essai
    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
    Points : 21
    Points
    21
    Par défaut
    Toujours le même retour malheureusement avec votre version.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    affection 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 projetJeuAnglais/finDuChargement()
    	at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
    	at flash.events::EventDispatcher/dispatchEvent()
    	at flash.net::URLLoader/flash.net:URLLoader::onComplete()
    J'essaye maintenant avec l'ajout des listeners pour voir si cela fonctionne.

    EDIT: En inversant l'ajout des listeners avec le chargement du fichier cela me renvoit de même le message cité au dessus.

  11. #11
    Membre éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    Par défaut
    avec la modification suivante ?

    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
     
    public static var isloaded:Boolean = false;
    		public static function set phrases(val:XML):void {
    			trace("affection de " + val + " a _phrases");
    			isloaded = true;
    			try { throw new Error();
    			}catch (er:Error) {
    				trace("a" + er.getStackTrace());
    			}
    			_phrases = val;
    		}
    		public static function get phrases(  ) :XML {
    			if (!isloaded) {
    				trace("phrases n'est pas encore chargé");
    				try { throw new Error();
    				}catch (er:Error) {
    					trace("a" + er.getStackTrace());
    				}
    			}
    			return _phrases;
    		}

  12. #12
    Membre à l'essai
    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
    Points : 21
    Points
    21
    Par défaut
    Rebonjour,

    Encore et toujours le même retour:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    affection 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()

  13. #13
    Membre éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    Par défaut
    avec cette version dite mois si "phrases n'est pas encore chargé" ou "phrases est chargé". A quelle moment dans le code récupérez vous la valeur de phrases (en dehors de la function de reception )?

    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 static var isloaded:Boolean = false;
    		public static function set phrases(val:XML):void {
    			trace("affection de " + val + " a _phrases");
    			isloaded = true;
    			try { throw new Error();
    			}catch (er:Error) {
    				trace("a" + er.getStackTrace());
    			}
    			_phrases = val;
    		}
    		public static function get phrases(  ) :XML {
    			if (!isloaded) {
    				trace("phrases n'est pas encore chargé");
    				try { throw new Error();
    				}catch (er:Error) {
    					trace("a" + er.getStackTrace());
    				}
    			}else
    {
    trace("phrases  est  chargé"+phrases);
     
    }
    			return _phrases;
    		}

  14. #14
    Membre à l'essai
    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
    Points : 21
    Points
    21
    Par défaut
    Toujours rien avec votre nouvelle version. Ni l'un, ni l'autre des messages ne s'affiche ("phrases n'est pas encore chargé" ou "phrases est chargé). J'appelle phrase pour l'afficher dans mon init. Sinon les messages sont générés par la fonction set phrases. Get phrases n'a pas l'air d'être appellé par lui même.

    Je suis désolé mais je ne sais quelle est la commande pour utiliser la fonction du get?

  15. #15
    Membre éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    Par défaut
    ok
    hum
    vous pouvez tester avec cette function init :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    public function init(event:Event):void // fonction qui s'execute au lancement de l'animation
    {
    chargeXML();// fonction qui appelle le xml
    trace("init projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    if(projetJeuAnglais.phrases!=null&&
    			projetJeuAnglais.phrases!=undefined){
    			stage.removeEventListener(Event.ENTER_FRAME, init);// on retire l'écouteur EnterFrame pour ne pas créer une boucle infinie 
    			}
    //trace("init phrases"+phrases);
    //trace(projetJeuAnglais._phrases);
    }

  16. #16
    Membre à l'essai
    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
    Points : 21
    Points
    21
    Par défaut
    Merci, cela donne donc:

    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
     
    null
    phrases n'est pas encore chargé
    aError
    	at projetJeuAnglais$/get phrases()
    	at projetJeuAnglais/init()
    init projetJeuAnglais.phrasesnull
    phrases n'est pas encore chargé
    aError
    	at projetJeuAnglais$/get phrases()
    	at projetJeuAnglais/init()
    affection 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 projetJeuAnglais/finDuChargement()
    	at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
    	at flash.events::EventDispatcher/dispatchEvent()
    	at flash.net::URLLoader/flash.net:URLLoader::onComplete()

  17. #17
    Membre éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    Par défaut
    Citation Envoyé par pigeonus Voir le message

    Je suis désolé mais je ne sais quelle est la commande pour utiliser la fonction du get?
    La function get est appelée automatiquement quand on appelle
    projetJeuAnglais.phrases

  18. #18
    Membre éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    Par défaut
    ok bien donc maintenant
    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
     
    public function init(event:Event):void // fonction qui s'execute au lancement de l'animation
    {
    chargeXML();// fonction qui appelle le xml
    trace("init projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    if(projetJeuAnglais.phrases!=null&&
    			projetJeuAnglais.phrases!=undefined){
    trace("-----------------------");
    trace("-----------------------");
    trace("phrases est maintenant chargé sa valeur est "+projetJeuAnglais.phrases);
    trace("-----------------------");
    trace("on retire l'écouteur EnterFrame pour ne pas créer une boucle infinie ");
    trace("Et voila");
    			stage.removeEventListener(Event.ENTER_FRAME, init);// on retire l'écouteur EnterFrame pour ne pas créer une boucle infinie 
    			}
    //trace("init phrases"+phrases);
    //trace(projetJeuAnglais._phrases);
    }

  19. #19
    Membre à l'essai
    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
    Points : 21
    Points
    21
    Par défaut
    Apparemment la phrase n'est pas encore chargé. C'est à n'y rien comprendre. =(
    Merci beaucoup de votre aide même si apparemment, le problème n'est pas aussi simple.

    Edit: Votre script cree une boucle infini. On dirait qu'il ne retire pas l'écouteur ENTER_FRAME du coup il doit surement lancer init en boucle. Aucun des traces ne s'affiche du coup. Flash plante, apparement le code n'entre pas dans le cas projetJeuAnglais.phrases != null && projetJeuAnglais.phrases != undefined)

  20. #20
    Membre éprouvé

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

    Informations forums :
    Inscription : Novembre 2009
    Messages : 612
    Points : 1 226
    Points
    1 226
    Par défaut
    hum ok testons avec un interval plus lent (1 seconde)
    rajoutez les deux imports suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	import flash.utils.clearInterval; 
    	import flash.utils.setInterval;
    puis
    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 function init(event:Event):void  // fonction qui s'execute au lancement de l'animation
    		{
    			chargeXML();// fonction qui appelle le xml
    			 stage.removeEventListener(Event.ENTER_FRAME, init);// on retire l'écouteur EnterFrame pour ne pas créer une boucle infinie 
    			 	//trace(phrases);
    			//trace("init projetJeuAnglais.phrases"+projetJeuAnglais.phrases);
    			//trace("init phrases"+phrases);
    			//trace(projetJeuAnglais._phrases);
    		 intervalId=setInterval(test, 1000);
    		}
    		public static var intervalId:Number;
    	public function test( ):void  // fonction qui s'execute au lancement de l'animation
    		{
    			 
    		if (projetJeuAnglais.phrases != null &&
    			projetJeuAnglais.phrases!=undefined){
    			trace("-----------------------");
    trace("-----------------------");
    trace("phrases est maintenant chargé sa valeur est "+projetJeuAnglais.phrases);
    trace("-----------------------");
    trace("on retire l'écouteur EnterFrame pour ne pas créer une boucle infinie ");
    trace("Et voila");
    clearInterval(intervalId );
    				;// on retire l'écouteur EnterFrame pour ne pas créer une boucle infinie 
    			} 
    		}

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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, 16h25
  2. Modifier une variable static
    Par amine_smi dans le forum Langage
    Réponses: 7
    Dernier message: 19/03/2009, 15h58
  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, 19h00
  4. Réponses: 1
    Dernier message: 16/11/2006, 14h33
  5. Modifier une variable globale
    Par bahet dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/04/2006, 19h04

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