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 18/04/2006, 16h32   #1
Membre Expert
 
Avatar de Demco
 
Inscription : mai 2002
Messages : 1 396
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2002
Messages : 1 396
Points : 1 411
Points : 1 411
Par défaut [Résolu][AS2] Atteindre attribut d'une classe depuis une fonction interne a la classe

Bonjour,

J'ai crée une version simplifiée de ma classe afin que ce soit plus clair.
Une méthode de ma classe contient une fonction (_document.onLoad=function(){...}).
Dans cette fonction il m'est impossible d'accéder à l'attribut _xmlMenu de ma 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
class Page2{
    //declare class attributes
    private var _xmlMenu:String;
    private var _document:XML;
 
    //Constructor
    function Page2(xmlMenu:String){
        _xmlMenu = xmlMenu;
        trace("Page2.constructor._xmlMenu: "+_xmlMenu); //affichage correct
        getXMLMenu();
    }
 
 
    private function getXMLMenu():Void{
        _document=new XML(); //we create the XML object
        _document.ignoreWhite=true;// useless spaces are erased
        _document.load(_xmlMenu);//we load the XML file
        _root.stop();
 
        // Once the file is loaded ...
        _document.onLoad=function(){
            trace("Page2.getXMLMenu._xmlMenu: "+_xmlMenu); //ICI AFFICHE UNDEFINED
        }
    }    
}
Il me semble évident que ce soit une règle de base d'ActionScript qui interdise cela, mais je peine a trouver le bonne syntaxe.
Quelqu'un saurait m'expliquer ce phénomène et si possible un moyen de résoudre ce probème ?

Merci bien.
__________________
J'aime les gâteaux.
Demco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 18h09   #2
Membre habitué
 
Avatar de Isses
 
Inscription : février 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 200
Points : 108
Points : 108
Envoyer un message via MSN à Isses
je pense que c'est par ce qu'un nom ne peut pas commencer par un underscore. essaye sans et tiens nous au courant.
__________________
Pas evident de comprendre tous les soucis que l'on peux rencontrer entre flash, xml, html, phph ... quand on a pas fait les études qui correspondent.

Beh oui, moi je fais du design graphique
Isses est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 18h35   #3
Membre Expert
 
Avatar de Demco
 
Inscription : mai 2002
Messages : 1 396
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2002
Messages : 1 396
Points : 1 411
Points : 1 411
Citation:
Envoyé par Isses
je pense que c'est par ce qu'un nom ne peut pas commencer par un underscore. essaye sans et tiens nous au courant.
Bonjour et merci pour ta réponse.
Seulement, comment expliquer que la même ligne dans le constructeur affiche la bonne donnée dans ce cas ?
Il serait étrange qu'il n'accepte les noms avec underscore que lorsque l'envie lui vient.

Cependant j'essaie bien évidemment la solution que tu me propose demain au boulot.

Si jamais qu'un d'autre a également une idée sur le sujet qu'il n'hésite pas à le faire savoir.

Merci encore à toi et à bientôt.
__________________
J'aime les gâteaux.
Demco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 18h40   #4
Nouveau Membre du Club
 
Inscription : septembre 2005
Messages : 108
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 108
Points : 32
Points : 32
c'est normal vu que tu est dans la fonction onLoad le this correspond à l'objet XML.
Une alternative :
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
 
class Page2{
    //declare class attributes
    private var _xmlMenu:String;
    private var _document:XML;
 
    //Constructor
    function Page2(xmlMenu:String){
        _xmlMenu = xmlMenu;
        trace("Page2.constructor._xmlMenu: "+_xmlMenu); //affichage correct
        getXMLMenu();
    }
 
 
    private function getXMLMenu():Void{
        _document=new XML(); //we create the XML object
        _document.ignoreWhite=true;// useless spaces are erased
        _document.param = this;
        _document.load(_xmlMenu);//we load the XML file
        _root.stop();
 
        // Once the file is loaded ...
        _document.onLoad=function(){
            trace("Page2.getXMLMenu._xmlMenu: "+param._xmlMenu); 
        }
    }    
}
Je sais pas si cette méthode est apprécié des "pros" qui te diront certainement: "Il doit y avoir une erreur dans ta conception..."
Sinon si cela suffit mets seulement la string en paramètre de l'objet.
smedini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 18h59   #5
Membre Expert
 
Avatar de Demco
 
Inscription : mai 2002
Messages : 1 396
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2002
Messages : 1 396
Points : 1 411
Points : 1 411
J'ai modifié
Code :
 _document.param = this;
par
Et cela semble marcher parfaitement.

Merci beaucoup à vous deux.

PS : Si un pro veut me dire quel est le problème de conception je suis tout ouïe.
__________________
J'aime les gâteaux.
Demco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 20h33   #6
Membre Expert
 
Avatar de Demco
 
Inscription : mai 2002
Messages : 1 396
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2002
Messages : 1 396
Points : 1 411
Points : 1 411
Code :
 Sinon si cela suffit mets seulement la string en paramètre de l'objet.
Après relecture plus attentive je pense que cette solution est en effet la plus propre. Je m'en veux même de ne pas y avoir pensé tellement elle est évidente.

Encore merci à toi pour tes bonnes idées.
A bientôt.
__________________
J'aime les gâteaux.
Demco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 21h03   #7
Membre Expert
 
Avatar de Demco
 
Inscription : mai 2002
Messages : 1 396
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2002
Messages : 1 396
Points : 1 411
Points : 1 411
Bon ça m'apprendra à parler sans tester.

Il semble que le OnLoad de XML ne permette pas ce que je veux :
http://livedocs.macromedia.com/flash...apter2215.html

Le paramètre ne peux être qu'un booléen indiquant si le chargement a fonctionné ou non semble-t-il.

Cependant ton autre méthode fonctionne parfaitement je m'y tiendrai donc.
__________________
J'aime les gâteaux.
Demco est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h23.


 
 
 
 
Partenaires

Hébergement Web