Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS1/AS2
AS1/AS2 Questions relatives à la programmation ActionScript 1 et 2 (Cours AS2)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2007, 01h01   #1
Nouveau Membre du Club
 
Inscription : octobre 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 89
Points : 26
Points : 26
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 :
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 :
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.
__________________
http://www.media-bloger.com Musiques à la demande, gratuite et illimité
barok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 21h40   #2
Nouveau Membre du Club
 
Inscription : octobre 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 89
Points : 26
Points : 26
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 :
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
__________________
http://www.media-bloger.com Musiques à la demande, gratuite et illimité
barok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 21h13   #3
Nouveau Membre du Club
 
Inscription : octobre 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 89
Points : 26
Points : 26
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
__________________
http://www.media-bloger.com Musiques à la demande, gratuite et illimité
barok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 10h35   #4
Nouveau Membre du Club
 
Inscription : octobre 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 89
Points : 26
Points : 26
dernier UP avant que je retourne en AS1.
__________________
http://www.media-bloger.com Musiques à la demande, gratuite et illimité
barok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 10h47   #5
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
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 : 143
Points : 31
Points : 31
Salut, voici un bout de code qui fonctionne

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
// 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
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 11h27   #6
Nouveau Membre du Club
 
Inscription : octobre 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 89
Points : 26
Points : 26
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 :
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.
__________________
http://www.media-bloger.com Musiques à la demande, gratuite et illimité
barok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 11h28   #7
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
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 : 143
Points : 31
Points : 31
Avec ça marche pas ?
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 11h31   #8
Nouveau Membre du Club
 
Inscription : octobre 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 89
Points : 26
Points : 26
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
__________________
http://www.media-bloger.com Musiques à la demande, gratuite et illimité
barok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 11h42   #9
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
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 : 143
Points : 31
Points : 31
Pour résumer, tu n'arrives pas à appeler une fonction interne à ta classe ?

Je viens de tester ça et ça roule
Code :
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");
	}
}
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 11h52   #10
Nouveau Membre du Club
 
Inscription : octobre 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 89
Points : 26
Points : 26
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 :
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.
__________________
http://www.media-bloger.com Musiques à la demande, gratuite et illimité
barok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 11h53   #11
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
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 : 143
Points : 31
Points : 31
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.
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 12h29   #12
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
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 : 143
Points : 31
Points : 31
Je sais pas si ça va aller mais j'ai fait ça :

Classe
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
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 :
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
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h10.


 
 
 
 
Partenaires

Hébergement Web