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 1 & ActionScript 2 Discussion :

[AS2] Atteindre attribut d'une classe depuis une fonction interne a la classe [Débutant(e)]


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    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 : 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
    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.

  2. #2
    Membre habitué Avatar de Isses
    Profil pro
    Inscrit en
    Février 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 200
    Points : 133
    Points
    133
    Par défaut
    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

  3. #3
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    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.

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 108
    Points : 65
    Points
    65
    Par défaut
    c'est normal vu que tu est dans la fonction onLoad le this correspond à l'objet XML.
    Une alternative :
    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
     
    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.

  5. #5
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    J'ai modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     _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.

  6. #6
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     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.

  7. #7
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    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.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. Réponses: 13
    Dernier message: 16/01/2015, 10h50
  3. Accès à une méthode d'une form depuis une autre autre form
    Par arngrimur dans le forum Windows Forms
    Réponses: 16
    Dernier message: 13/01/2012, 15h45
  4. [AC-2007] Copier une table depuis une base vers une autre
    Par Triton972 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/11/2009, 19h27
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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