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 1 & ActionScript 2 Discussion :

[AS2] Probleme chargement XML et portée des variables


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut [AS2] Probleme chargement XML et portée des variables
    Bonjour tout le monde.
    Je bataille pour passer une appli AS1 en AS2.
    Je vous montre un code minimal qui ne fonctionne 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
     
    class MaClass
    {
    var param_xml:XML;
    function MaClass ()
    {
    param_xml = new XML ();
    param_xml.load ("http://une_url_qui_fonctionne/param.xml");
    param_xml.onLoad = this.chargement ();
    }
    function chargement (ok:Boolean)
    {
    trace(ok)
    trace ("longueur : " + param_xml.firstChild.childNodes.length);
    }
    Impossible de recuperer la longueur du fichier XML (donc le nombre d'element). Je précise également que le ok me renvoie toujours undefined.
    Ce code fonctionne correctement en AS1 cf ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var param_xml:XML = new XML ();
    param_xml.load ("http://une_url_qui_fonctionne/param.xml");
    param_xml.onLoad = function (ok:Boolean)
    {
    trace(ok)
    trace ("longueur : " + param_xml.firstChild.childNodes.length);
    }
    Je précise qu'en utilisant this.param_xml, je n'obtiens toujours rien de concret. Je suppose que c'est un probleme de portée de variable mais je ne vois pas comment faire.
    Ai-je oublié qq chose (surement que oui) ?
    Ce n'est pas le seul probleme que je rencontre car j'ai encore 3 XML à charger et des 10aines d'images qui bloquent pour la même raison (alors que j'insiste, tout est fonctionnel en AS1).
    Merci à ceux qui m'apporteront une aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut
    Je reviens sur mon probleme qui n'avance toujours pas.
    J'ai découpé encore plus en fonction mais rien n'y fait, j'ai meme des trucs completement incompréhensible
    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
     
    class MaClass
    {
       var param_xml:XML;
       public function MaClass ()
       {
           chargement_XML();
       }
       public function chargement_XML ()
       {
          var param_xml:XML = new XML ();
          param_xml.load ("http://une_url_qui_fonctionne/param.xml");
          param_xml.onLoad = function(ok:Boolean)
          {
             if(ok === true)
             {
                trace("ok onLoad")
                go()
             }
          }
       }
       public function go()
       {
          trace("ok go");
       }
    }
    "ok onLoad" est bien affiché mais pas "ok go".
    COmment ca se fait ?
    J'ai beau retourner mon code dans tous les sens je ne vois vraiment pas pourquoi.
    Si quelqu'un connait le truc qui pourrait me débloquer.... merci à lui

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut
    Petit UP.
    Non pas que je veuille pester contre AS2 mais bon.... les barrieres que cela m'apportent sont plutôt énormes si ce dernier ne peut même pas exécuter une fonction ....

    SI quelqu'un peut m'aider... merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut
    dernier UP avant que je retourne en AS1.

  5. #5
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 164
    Par défaut
    Salut, voici un bout de code qui fonctionne

    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
    // Création d'un objet xml
    var xml:XML = new XML();
     
    // On ne tiend pas compte des noeuds vides
    xml.ignoreWhite = true;
     
    // Fonction appelée aprés chargement du fichier
    xml.onLoad = function(succes:Boolean){
    	if(succes){
    		for(i = 0; xml.firstChild.childNodes[i] != undefined; i++){
    //		for(i=0;i<xml.firstChild.childNodes.length;i++){
    			trace("--------------------------------------------------");
    			trace(xml.firstChild.childNodes[i].nodeName);
    			trace(xml.firstChild.childNodes[i].childNodes);
    			trace(xml.firstChild.childNodes[i].attributes.ordre);
    		}
    	}
    	else{
    		trace("Problème de chargement");
    	}
    }
     
    // Chargement du fichier
    xml.load("ex1.xml");
    Sinon, le problème peut venir de la structure de ton xml

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut
    Ce bout de code fonctionne en effet correctement mais une fois mis dans une class, il ne fonctionne plus.
    SI tu regardes le dernier code que j'ai envoyé, j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    param_xml.onLoad = function(ok:Boolean)
          {
             if(ok === true)
             {
                trace("ok onLoad")
                go()
             }
          }
    public function go()
       {
          trace("ok go");
       }
    Le trace "onLoad" est bien appelé mais pas le trace "ok go".
    Dingue non ?
    Je pense qu'il y a une syntaxe pour accéder aux fonctions dans les class AS2 que je ne connais pas.
    D'autant plus que mon appli (qui doit être compilé en open source avec MTASC) fait environ 2000 lignes de code. Et apparement le compilateur MTASC est + stricte que celui de Flash 8.
    J'ai pas fini d'en chier.

  7. #7
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 164
    Par défaut
    Avec ça marche pas ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut
    Non plus, j'ai testé avec
    this.go()
    _root.go()
    this._parent.go()
    this._parent._parent.go()
    this._parent._parent._parent.go()
    _parent.go()
    go()

    rien à faire

  9. #9
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 164
    Par défaut
    Pour résumer, tu n'arrives pas à appeler une fonction interne à ta classe ?

    Je viens de tester ça et ça roule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class ma_classe{
     
    	function ma_classe(){
    		trace("coucou");
    		this.test();
    	}
     
    	public function test(){
    		trace("Dans test");
    	}
    }

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut
    en effet ca roule aussi pour moi.
    Mais pour appelé une fonction depuis un "onLoad", je n'ai pas réussi.
    Ce bout de code fonctionnait aussi pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     public function MaClass ()
       {
           chargement_XML();
       }
       public function chargement_XML ()
       {
          trace("ca marche");
       }
    En tout cas merci de t'attarder sur mon problème.

  11. #11
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 164
    Par défaut
    Pour tout reprendre du début, tu veux faire une classe pour gérer tes xml avec appel d'une fonction spécifique quand ton xml est chargé ?

    Je vais voir de trouver une solution.

  12. #12
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 164
    Par défaut
    Je sais pas si ça va aller mais j'ai fait ça :

    Classe
    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
    class ma_classe{
     
    	// Création d'un objet xml
    	private var xml:XML;
    	private var fichier:String;
     
    	function ma_classe(fic){
     
    		xml = new XML();
     
    		fichier = fic;
     
    		cpt();
     
    	}
     
    	// Fonction appelée aprés chargement du fichier
    	function cpt(){
     
    		// On ne tiend pas compte des noeuds vides
    		xml.ignoreWhite = true;
     
    		xml.onLoad = function(succes:Boolean){
    			if(succes){
    				trace(this.firstChild.childNodes);
    			}
    			else{
    				trace("ko");
    			}
    		}
    		xml.load(fichier);
    	}
    }
    FLA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import ma_classe.as;
     
    var test:ma_classe = new ma_classe("ex1.xml");
    Si tu veux une fonction par type de xml, tu peux router dans ton constructeur

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/02/2005, 09h05
  2. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  3. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  4. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  5. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05

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