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

Flash Discussion :

Aprentissage difficile des classes


Sujet :

Flash

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Points : 36
    Points
    36
    Par défaut Aprentissage difficile des classes
    Bonjour je suis en train de me former au classe est j'ai vraiment du mal donc je poste ce que j'ai fait, c'est une classe récupere le nom d'un fichier xml depuis un script php puis le parse pour obtenir l'emplacement des fichiers a afficher a l'écran, puis elle créer un clip dans lequel elle affiche les images

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    <code>
    //****************************************************************************
    // ActionScript Extend Library
    //CadrePhoto
    //****************************************************************************
    [Inspectable(name="Largeur Images", variable="largeur", type="Number", defaultValue=800)]   
    [Inspectable(name="Hauteur Images", variable="hauteur", type="Number", defaultValue=600)]
    [Inspectable(name="Fichier XML", variable="xmlfilephoto", type="String",defaultValue="")]   
    [Inspectable(name="Alpha", variable="playalpha", type="Number", defaultValue=100)]
    [Inspectable(name="Delai", variable="delai", type="Number", defaultValue=1000)]   
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    dynamic class CadrePhoto extends MovieClip
    {
     
     
        /*private var __hauteur:Number ;
        private var __largeur:Number ;
        private var __delai:Number ;
        private var __numberPhoto:Number;
        private var __x:Number;
        private var __y:Number;
        private var __xmlFile:String;  
        private var XmlParserPhoto:XML;
        private var node1:Object;
        private var i:Number;
        private var __left:Number=0;
        private var __function:String;
        private var __erreur:String;
        private var __alpha;
        private var __photo:Array;
        private var containerPhoto:MovieClip
        private var listPhoto:Object;
        private var movieClipPhotol:MovieClipLoader;
        private var __photoActuelle:Number;
        private var __nomPhotoActuelle:String;
        private var __timePhoto:Number;*/
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        function CadrePhoto(largeur:Number,hauteur:Number,delai:Number,playalpha:Number)
        {
     
            _root.success= new Boolean();
            __hauteur=hauteur;
            __largeur=largeur;
            __delai=largeur;
            __alpha=playalpha;
            __photoActuelle=0;
            __photo=new Array(String);
     
     
        }
         public function XmlFile()
        {   
        //séparer nom prénom du contact
            var send_lv:LoadVars = new LoadVars();
            var result_lv:LoadVars = new LoadVars();
            send_lv.contact= _level0.contact;
            result_lv.onLoad = function(success1:Boolean)
            {
                 if (success1)
                 {
                    __xmlFile ="./upload/"+result_lv.user+"/.photo.xml";
                    trace("xml1"+__xmlFile);
                    success=true;
     
                 } else
                 {
                    __erreur="Pas de xml déterminé";
                    success=false;
     
                 }
     
            }
            send_lv.sendAndLoad("split.php",result_lv,"POST");
     
     
        }
         public function get etat():Boolean
        {   
            return success;
        }
     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public function ParseXML():Number
        {   
            XmlParserPhoto=new XML();
            XmlParserPhoto.ignoreWhite = true;
            trace("xmlfile"+__xmlFile);
            XmlParserPhoto.onLoad = function(Reussite2:Boolean)
            {
                trace("parser");
                if(Reussite2)
                {
                    node1 = XmlParserPhoto.firstChild;
     
                    for(i = 0; node1.childNodes[i] != undefined; i++)
                    {
     
                        if(!node1.childNodes[i].childNodes[0])
                        { //Si il n'existe pas
                            __numberPhoto = -1;
                            trace("node pb");
                            return 0;
     
                        }
                        else
                        { //Si il existe
     
                            __photo[i] =(node1.childNodes[i].childNodes[0].attributes.name);
                            trace("node"+node1.childNodes[i].childNodes[0].attributes.name);
                            trace(__photo[i]);
                            __numberPhoto = i;
                            return 1;
     
     
                        }
                    }
                }
                else
                {
                   return "Erreur lors du chargement du fichier XML";
                }
            }
            XmlParserPhoto.load(__xmlFile);
            return 1;
     
        }
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public function NextPhoto():String
       {
           trace("nextphoto");
             //incrémentation du curseur
            __photoActuelle++;
            //si on est pas à la fin
            if (__photoActuelle <=__numberPhoto)
                {
                //attribution de la valeur du tableau correspondant a __photoActuelle
                trace("nom="+__photo[__photoActuelle]);
                __nomPhotoActuelle= __photo[__photoActuelle];
                return __photoActuelle+"/"+__numberPhoto;
                //appel de la fonction qui va charger l'image
                }
            else
                {
                //si on est à la fin, on rénitialise le curseur
                __photoActuelle=-1;   
                }
        }
     
        public function PrevPhoto():String
       {
             //incrémentation du curseur
            __photoActuelle--;
            //si on est pas à la fin
            if (__photoActuelle >=0)
            {
                return __photoActuelle+"/"+__numberPhoto;
                //attribution de la valeur du tableau correspondant a _root.__photoActuelle
                __nomPhotoActuelle= __photo[__photoActuelle];
            }
            else
            {
                //si on est à la fin, on rénitialise le curseur
                __photoActuelle=__numberPhoto;           
            }
        }
     
     
     
     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
       public function LoadPicture()
       {     
           //on crée un clip vide dans lequel on va charger notre image
               _root.containerPhoto= new MovieClip;
            _root.containerPhoto= _root.createEmptyMovieClip("containerPhoto",this.getNextHighestDepth());
     
            //on définit un écouteur qui écoutera ce que raconte le MovieClipLoader (pour savoir quand le chargement sera fini)
            listPhoto= new Object();
     
            //on définit le MovieClipLoader qui chargera l'image dans notre containerPhoto
            movieClipPhotol= new MovieClipLoader();
     
            //on dit à notre écouteur d'écouter ce que raconte le MovieClipLoader
            movieClipPhotol.addListener(listPhoto);
     
            //on remet l'échelle du containerPhoto à 100%
                _root.containerPhoto._xscale = 100;
                _root.containerPhoto._yscale = 100;
     
     
     
            //fonction qui sera appelée quand l'écouteur entendra que le chargement est terminé
            listPhoto.onLoadInit = function(target_movieClipPhoto:MovieClip)
            {
                trace("list");
                //on va faire un petit fondu pour l'apparition de l'image, ça donne toujours bien
                //on mets donc l'alpha à 0 pour commencer
                target_movieClipPhoto._alpha = 0;
     
                //on calcule le ratio hauteur cadre par rapport à la hauteur de l'image (qui sera utilisé pour redimensionner l'image si elle trop grande pour le cadre)
                //var percent_w:Number = (cadre._width - marge_w) * 100 / target_movieClipPhoto._width;
                var percent_w:Number = (__largeur*100)/400;
                //var percent_h:Number = (cadre._height - marge_h) * 100 / target_movieClipPhoto._height;
                var percent_h:Number = (__hauteur*100)/300;
                //idem en largeur
     
     
                //on doit encore centrer l'image dans le cadre (son coin supérieur gauche est en (0,0) pour le moment)
     
                //on centre l'image en x
                target_movieClipPhoto._x = __x;
                //on centre l'image en y   
                target_movieClipPhoto._y = __y;
     
                target_movieClipPhoto._xscale = percent_w;
                target_movieClipPhoto._yscale = percent_w;
     
                //on affiche l'image avec un fondu
                target_movieClipPhoto.onEnterFrame = function()
                {
                    //on augmente de 5 jusqu'à arriver à __alpha
                    this._alpha += 5;
     
                    //si on est à 100 (ou plus pour être sûr)
                    if(this._alpha > __alpha)
                    {
                        //on met à 100 (des fois qu'on aurait dépassé pour une raison x ou y)
                        this._alpha = __alpha;
     
                        //on supprimer le onEnterFrame pour arrêter de boucler dedans
                        delete this.onEnterFrame;
                    }
                }
            }
            trace("nomphoto="+__nomPhotoActuelle);
            trace(    _root.containerPhoto);
            //On dit au MovieClipLoader de lancer le chargement de l'image dans le clip containerPhoto
            movieClipPhotol.loadClip(__nomPhotoActuelle,     _root.containerPhoto);
        }
     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    }
    </code>
    pour le fla:

    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
    <code>
    var cadrePhoto:CadrePhoto = new CadrePhoto(800,600,4000,100);
    var xmlFile:String
    cadrePhoto.XmlFile();
    function onEnterFrame()
    {
        this.succes=cadrePhoto.etat;
        trace("succces="+this.succes);
        if (this.succes)
        {
            delete this.onEnterFrame;
            cadrePhoto.ParseXML();
            cadrePhoto.watch("__nomPhotoActuelle",cadrePhoto.LoadPicture());
            ok.onPress = function(){
                cadrePhoto.NextPhoto();
                cadrePhoto.LoadPicture();
            }
        }
    }
     
    </code>
    Les points que je ne comprends pas:
    Pourquoi des que je déclare mes variable avec var ... au debut de ma classe je n'ai plus aces dans mes methodes a ces variables
    J'ai l'impression que mon clip container n'est pas créer dans la methode LoadPicture pourquoi:
    Avez vous des conseils et remarques a faire par rapport a ma classe
    Un livre ou un cours en ligne a me conseiller?
    merci de votre attention

  2. #2
    Membre habitué
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Points : 174
    Points
    174
    Par défaut
    Ne poste pas sur la racine du forum... essaye de cibler le sous-forum qui correspond le mieux à ta question.

    En l'occurrence, on ne sait pas si tu es en AS2 ou AS3. Ce qui implique certaines différences d'un point de vue de classe et justement d'accès aux variables.

    Le premier livre à lire, c'est la doc de l'AS frournie avec Flash (ou Flex). En plus des références du langage, tu as tout un tas de chapitres sur la programmation, et entre autre des chapitres sur les classes et la POO.

    Je préfère lire du papier que en ligne... et pour l'avoir imprimé, le livre que constitue la doc de Flash est déjà en soit un beau pavé.

    Enfin, j'ai regardé ton code en diagonale. Il semblerait que tu ne maîtrise effectivement pas bien les problématiques de portée des vrariables. Entre autre, fait gaffe aux public/static et aux private.

    Et puis n'importe quel bouquin généraliste sur la POO te donneras les bases de cette manière de programmer.

    Pour coder en POO, le chemin est parfois long et difficile. Mais l'effort en vaut la chandelle: code plus simple, rapide à écrire, plus ergonomique, facile à débugger, parfois plus rapide à l'exécution, mieux maintenable, plus logique, structuré et compréhensible... tu as donc raison de suivre ce chemin.

    Lis la doc, fait de petits essais simples (celui-ci est déjà bien trop gros pour un débutant), avec 2 ou 3 propriétés et 1 ou 2 méthodes. Si ça ne marche pas poste tes questions dans un des sous-forum et nous tâcherons de t'aider.

    Bon courage

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Points : 36
    Points
    36
    Par défaut
    Merci de ces remarques intérressante

Discussions similaires

  1. Diagramme des classes pour l'interface visuel
    Par robv dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 25/06/2004, 10h50
  2. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30
  3. Créer les get et set des classes
    Par cameleon2002 dans le forum JBuilder
    Réponses: 3
    Dernier message: 17/09/2003, 21h03
  4. specifier les chemins des .class
    Par draken dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/07/2003, 09h35
  5. Inserer des classes java existantes
    Par 2000 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 20/03/2003, 12h35

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