bonjour j ai un souci avec une variable de class , en fait je cree un tableau
de tableaux avec les donnees d un xml le problem cest que sortie de la
fonction qui cree les tableau je ne peux plus acceder au valeur de ces derniers
code :
class concertXml1 {
private var documentXml:XML;
//
// tableau contenant toute les ann?es
private var dateAnnee_ary:Array;
//
// tableau de date par ann?e
private var dateParAnnee_ary:Array;
//
// tableau contenant les 4 attribues suivants:
// - numeroJour
// - nomJour
// - numeroMois
// - nomMois
private var date_ary:Array = new Array();
//
private var nombreDeDate:Number;
private var num:Number;
/*
* constructeur de la class concertXml
*/
public function concertXml1(url:String) {
documentXml = new XML();
documentXml.ignoreWhite = true;
chargement(documentXml);
documentXml.load(url);
}
/*
* charge le doc xml
* implemante les tableaux
*/
private function chargement(document:XML) {
document.onLoad = function(success:Boolean) {
if (success) {
dateAnnee_ary = new Array();
dateParAnnee_ary = new Array();
num = 0;
for (var i = 0; i<this.firstChild.childNodes.length; i++) {
dateAnnee_ary = this.firstChild.childNodes.attributes["nom"];
dateParAnnee_ary = new Array();
date_ary = new Array();
var l = 0;
for (var j = 0; j<this.firstChild.childNodes.childNodes.length; j++) {
if (this.firstChild.childNodes.childNodes[j].attributes ["numeroJour"]
== "" && this.firstChild.childNodes.childNodes[j].attributes["numeroMois"] ==
"" && this.firstChild.childNodes.childNodes[j].attributes["nomJour"] == "" &&
this.firstChild.childNodes.childNodes[j].attributes["nomMois"] == "") {
} else {
num++;
date_ary[l] = new Array();
date_ary[l].numero = num;
date_ary[l].numeroJour =
this.firstChild.childNodes.childNodes[j].attributes["numeroJour"];
date_ary[l].nomJour =
this.firstChild.childNodes.childNodes[j].attributes["nomJour"];
date_ary[l].nomMois =
this.firstChild.childNodes.childNodes[j].attributes["nomMois"];
date_ary[l].numeroMois =
this.firstChild.childNodes.childNodes[j].attributes["numeroMois"];
date_ary[l].annee = dateAnnee_ary;
date_ary[l].lieu = new Array();
date_ary[l].lieu.ville =
this.firstChild.childNodes.childNodes[j].firstChild.attributes["ville"];
date_ary[l].lieu.codePostale =
this.firstChild.childNodes.childNodes[j].firstChild.attributes["codePostale"];
date_ary[l].lieu.salle =
this.firstChild.childNodes.childNodes[j].firstChild.attributes["salle"];
date_ary[l].groupe = new Array();
for (var k = 1; k<this.firstChild.childNodes.childNodes[j].childNodes.length;
k++) {
date_ary[j].groupe[k-1] = new Array();
date_ary[j].groupe[k-1].nom =
this.firstChild.childNodes.childNodes[j].childNodes[k].attributes["nom"];
date_ary[j].groupe[k-1].style =
this.firstChild.childNodes.childNodes[j].childNodes[k].attributes["genre"];
date_ary[j].groupe[k-1].villeDorigine =
this.firstChild.childNodes.childNodes[j].childNodes[k].attributes["villeDorigin"
];
date_ary[j].groupe[k-1].siteInternet =
this.firstChild.childNodes.childNodes[j].childNodes[k].attributes["siteInternet"
];
}
l++;
}
dateParAnnee_ary = date_ary;
}
}
nombreDeDate = 0;
for (var i = 0; i<dateParAnnee_ary.length; i++) {
nombreDeDate = nombreDeDate+dateParAnnee_ary.length;
}
}
}
}
[...]
lorsque je me refere au tableau dateParAnnee_ary dans une autre fonction il me
le defini comme undefined
... pourkoi?
si vous avez une solution je suis curieu de la connaitre :)
merci
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
eRom
Bonjour,
A mon avis c'est un probl?me de ciblage. Quand tu rentres dans la fonction 'document.onLoad', tu changes de cible, d'ailleurs en observant le code, on s'en rend compte rapidement, quand tu utilises "this", tu pointes vers l'objet XML et non plus sur la classe en elle m?me. ;)
Voil? ce que je te propose, tu peux utiliser la classe mx.utils.Delegate pour rerouter la fonction 'onLoad' et modifer le ciblage de celle ci.
Ensuite tu modifies un peu ta fonction de 'parsing' de ton Xml. Au lieu de pointer avec le this, tu appel directement l'instance Xml avec ta variable : documentXml
Pour plus de controle, tu peux ins?rer une petite gestion d'?v?nement (EventDisptacher), pour savoir quand le parsing est fini et commencer ton traitement par la suite.
Le contructeur modif? ainsi que le d?but de la fonction de parsing est joint un peu plus bas. En esp?rant que ?a puisse t'aider. Au cas o?, n'h?sites pas ;)
public function concertXml1 (p_sUrl : String) { documentXml = new XML (); documentXml.ignoreWhite = true; documentXml.onLoad = mx.utils.Delegate.create(this, _chargement); documentXml.load (url); }
public function _chargement(p_bSuccess : Boolean) : Void { if(!p_bSuccess) return;
dateAnnee_ary = new Array (); dateParAnnee_ary = new Array (); num = 0; for (var i = 0; i < documentXml.firstChild.childNodes.length; i ++) { [...] } [...] }
Bonjour,
A mon avis c'est un probl?me de ciblage.
Quand tu rentres dans la fonction 'document.onLoad', tu changes de cible,
d'ailleurs en observant le code, on s'en rend compte rapidement, quand tu
utilises "this", tu pointes vers l'objet XML et non plus sur la classe en elle
m?me. ;)
Voil? ce que je te propose, tu peux utiliser la classe mx.utils.Delegate pour
rerouter la fonction 'onLoad' et modifer le ciblage de celle ci.
Ensuite tu modifies un peu ta fonction de 'parsing' de ton Xml.
Au lieu de pointer avec le this, tu appel directement l'instance Xml avec ta
variable : documentXml
Pour plus de controle, tu peux ins?rer une petite gestion d'?v?nement
(EventDisptacher), pour savoir quand le parsing est fini et commencer ton
traitement par la suite.
Le contructeur modif? ainsi que le d?but de la fonction de parsing est joint
un peu plus bas.
En esp?rant que ?a puisse t'aider.
Au cas o?, n'h?sites pas ;)
public function concertXml1 (p_sUrl : String)
{
documentXml = new XML ();
documentXml.ignoreWhite = true;
documentXml.onLoad = mx.utils.Delegate.create(this, _chargement);
documentXml.load (url);
}
public function _chargement(p_bSuccess : Boolean) : Void
{
if(!p_bSuccess) return;
dateAnnee_ary = new Array ();
dateParAnnee_ary = new Array ();
num = 0;
for (var i = 0; i < documentXml.firstChild.childNodes.length; i ++) {
[...]
}
[...]
}
A mon avis c'est un probl?me de ciblage. Quand tu rentres dans la fonction 'document.onLoad', tu changes de cible, d'ailleurs en observant le code, on s'en rend compte rapidement, quand tu utilises "this", tu pointes vers l'objet XML et non plus sur la classe en elle m?me. ;)
Voil? ce que je te propose, tu peux utiliser la classe mx.utils.Delegate pour rerouter la fonction 'onLoad' et modifer le ciblage de celle ci.
Ensuite tu modifies un peu ta fonction de 'parsing' de ton Xml. Au lieu de pointer avec le this, tu appel directement l'instance Xml avec ta variable : documentXml
Pour plus de controle, tu peux ins?rer une petite gestion d'?v?nement (EventDisptacher), pour savoir quand le parsing est fini et commencer ton traitement par la suite.
Le contructeur modif? ainsi que le d?but de la fonction de parsing est joint un peu plus bas. En esp?rant que ?a puisse t'aider. Au cas o?, n'h?sites pas ;)
public function concertXml1 (p_sUrl : String) { documentXml = new XML (); documentXml.ignoreWhite = true; documentXml.onLoad = mx.utils.Delegate.create(this, _chargement); documentXml.load (url); }
public function _chargement(p_bSuccess : Boolean) : Void { if(!p_bSuccess) return;
dateAnnee_ary = new Array (); dateParAnnee_ary = new Array (); num = 0; for (var i = 0; i < documentXml.firstChild.childNodes.length; i ++) { [...] } [...] }