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:
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:
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! :ccool:
Merci d'avance!