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 :

Chargement de XML et appel de méthode?


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut Chargement de XML et appel de méthode?
    Bonjour à tous,

    Étant débutant en AS3, j'ai un peu de mal avec le concept d'objet et le gestionnaire d'évènements!

    Mon problème actuel:
    Je créé une classe chargeant un XML
    Suite au chargement, j'ai besoin de différentes méthodes utilisant le contenu de ce XML

    Le problème est que lors de l'instanciation de ma classe, le chargement du XML se fait automatiquement dans le constructeur, seulement, l'appel de mes méthodes (utilisant le contenu du XML) semble se faire avant le chargement de mon XML... D'où le problème!

    Petit exemple rapide:

    Main.as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Instanciation de ma classe
    var produit:ChargeProduit = new ChargeProduit('imgProduit');
    // Appel de ma méthode
    trace(produit.getNombreProduit());
    ChargeProduit.as
    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
     
    public class ChargeProduit extends Main {
     
    		// Objet de chargement du XML
    		public var chargementXMLProduit:URLLoader = new URLLoader();
     
    		// Variables pour la gestion produit
    		public var infosProduit = new XMLDocument();
    		public var nombreDeProduit:int;
     
    		// Clip dans lequel on affiche le produit
    		public var clipProduit:String = new String;
     
    		/**
    		 * Constructeur chargeant mon XML
    		 */
    		public function ChargeProduit(clipProduitTemp:String) 
    		{
    			clipProduit = clipProduitTemp;
     
    			// Traitement XML Produit
    			var fichierXMLProduit:URLRequest = new URLRequest("monFichier.xml");// url du fichier chargé
    			chargementXMLProduit.addEventListener( Event.COMPLETE, chargeXMLProduit); 
    			chargementXMLProduit.load(fichierXMLProduit); 
    		}
     
     
    		/**
    		 * Chargement du XML
    		 */
    		private function chargeXMLProduit(pEvt:Event):void 
    		{
    			var produitXML = new XML(pEvt.target.data);
    		    infosProduit = produitXML[0]["produits"];
    		}
     
    		/**
    		 * Fonction sortant le nombre de produits dispos dans le XML
    		 */
    		public function getNombreProduit()
    		{
    	   	   	nombreDeProduit = infosProduit.elements("*").length();
    			return nombreDeProduit;
    		}
    Je pense ne pas avoir tout bien assimilé, donc je fais appel à vous pour m'orienter dans la bonne voie!

    Merci d'avance!

  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 : 40
    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,

    il faut que la classe génère un évènement lorsque le chargement est terminé.
    Cet évènement doit être attendu dans le code principal avant d'utiliser le getNombreProduit sur l'instance.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut
    Merci de ta réponse.

    Je viens de tenter un truc, je sais pas si je suis bon...

    J'ai ajouté dans ChargeProduit.as:

    A la fin de la fonction chargeXMLProduit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Création d'un évènement
    dispatchEvent(new Event(ChargeProduit.ACTION));
    ACTION étant défini comme une variable public dans ma classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static var ACTION:String = "action";
    Du coup, dans le Main.as, on ajoute l'écouteur comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var produit:ChargeProduit = new ChargeProduit('imgProduit');
     
    produit.addEventListener(ChargeProduit.ACTION, actionProduit);
     
    function actionProduit(e:Event)
    {
    	trace(produit.getNombreProduit());
    }
    C'est la bonne méthode?

  4. #4
    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 : 40
    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
    Citation Envoyé par Subshadow Voir le message
    C'est la bonne méthode?
    ouaip c'est ce que j'aurai fait

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut
    Merci alors, c'est fun!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/03/2015, 11h06
  2. Comment appeler une méthode python dans un xml?
    Par AmFaye2 dans le forum Odoo (ex-OpenERP)
    Réponses: 3
    Dernier message: 23/09/2013, 13h59
  3. Renvoyer du xml après appel à une méthode WCF
    Par 404error dans le forum Services Web
    Réponses: 13
    Dernier message: 07/08/2009, 12h11
  4. Comment appeler une méthode au chargement d'un contexte?
    Par jean2ce dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 30/11/2007, 21h28
  5. XML-RPC appel de méthode
    Par zulad dans le forum Autres composants
    Réponses: 12
    Dernier message: 12/07/2007, 23h48

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