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 3 Discussion :

Appeler le XML en AS3


Sujet :

ActionScript 3

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut Appeler le XML en AS3
    Bonjour,
    J'ai un léger soucis :
    En flash, j'ai fait une galerie d'image. Elle fonctionne super bien. La seule chose que je n'arrive pas a faire marcher c'est pour la couleur du texte de la légende de la photo affichée:
    elle est par défaut comme sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var formatTitre:TextFormat = new TextFormat;
    formatTitre.color = 0x000000;
    formatTitre.size = 18;
    formatTitre.font = 'cambria';
    formatTitre.align = 'left';
    Ce que j'aimerai ce serai entré les codes couleurs pour chaque images dans mon fichier XML, et les appelées dans mon code ActionScript (3).

    Voici le code XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="utf-8"?>
    <galerie>
    <image src="01 Kill 'Em All.jpg" alt="1er Album - Kill 'Em All" col="0xc39e2e"/>
    <image src="02 Ride The Lightning.jpg" alt="2ème Album - Ride The Lightning" col="0xc72e2e"/>
    <image src="03 Master Of Puppets.jpg" alt="3ème Album - Master Of Puppets" col="0xc62e2e"/>
    <image src="04 And Justice For All.jpg" alt="4ème Album - ...And Justice For All" col="0x232e2e"/>
    <image src="05 Vertigo.jpg" alt="5ème Album - Vertigo (Black Album)" col="0xc3232e"/>
    <image src="06 Load.jpg" alt="6ème Album - Load" col="0xc32e29"/>
    <image src="07 Reload.jpg" alt="7ème Album - Reload" col="0xc3973e"/>
    <image src="08 St Anger.jpg" alt="8ème Album - St. Anger" col="0xc99997"/>
    <image src="09 Death Magnetic.jpg" alt="9ème Album - Death Magnetic" col="0xc3792e"/>
    </galerie>
    Comment je peux faire pour appeler la valeur dans mon attribut "col" ?
    Ce que je veux est simplement sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formatTitre.color = 'col';
    Merci de m'aider
    et bonne journée a tous

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut,

    telecharger a la place de appeler !
    commence par telecharger le XML .
    http://livedocs.adobe.com/flash/9.0_...=00000316.html

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 34
    Par défaut
    Bonjour,

    En effet, il faut commencer par charger dans ton animation le fichier XML avec un URLLoader();
    Ensuite tu pourras facilement récupérer ton attribut 'col' en parcourant l'objet XML créé et donner sa valeur à ton TextFormat, après éventuellement un petit cast

    Romain

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut Merci
    Bonjour a tous et merci de votre aide.
    J'ai appelé l'UrlLoader mais plus loin.
    Tout de suite je vous donne tout le code avec des commentaires.
    Peut etre devrais-je remodeler la mise en forme du code?
    merci de me le dire :
    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
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import fl.containers.UILoader;
        import fl.controls.ProgressBar;
        import fl.transitions.Tween;
        import fl.transitions.easing.*;
        import fl.transitions.TweenEvent;
        import flash.events.*;
        import flash.text.*;
        import flash.filters.*;
     
        //Constantes    
        var dossierImage:String = 'images/';
        var dossierImageMini:String = 'images/min/';    
     
     
        //Chargeur qui téléchargera notre fichier XML    
        var chargeur:URLLoader = new URLLoader ();
        //objet URLRequest qui contient l'url du fichier XML:
        var adresse:URLRequest = new URLRequest ("galerie.xml");
     
        chargeur.load(adresse);
        chargeur.addEventListener(Event.COMPLETE, finDuChargementXML);
     
     
        //Variable contenant le texte alternatif
        var alt:String;
     
        /*Style utilisé pour le texte Alternatif*/
                    var formatTitre:TextFormat = new TextFormat;
                            formatTitre.color = 0x000000;                        
                            formatTitre.size = 18;
                            formatTitre.font = 'cambria';
                            formatTitre.align = 'left';
     
     
     
        //Champ texte pour le texte alternatif
        var texteAlt:TextField = new TextField();
                        texteAlt.text = '';
                        texteAlt.x = 325;
                        texteAlt.y = 425;
                        texteAlt.width = 400;
                        this.addChild(texteAlt);
     
        //Champ texte pour le message de chargement
        var chargement:TextField = new TextField();
                        chargement.text = 'Chargement en cours...';
                        chargement.setTextFormat(formatTitre);
                        chargement.width = 200;
                        chargement.x = 350;
                        chargement.y = 200;
                        this.addChild(chargement);
     
        /*Une fois que le fichier XML es.addChild()t chargé...*/
        function finDuChargementXML(evt:Event):void{
                //Objet XML
                var monXML:XML = new XML(evt.target.data);
                //UILoader qui contiendra l'image originale
                var photoPrincipale:UILoader = new UILoader();
                            photoPrincipale.source = dossierImage+monXML.image[1].attribute("src");
                            photoPrincipale.x = 280;
                            photoPrincipale.y = 10;
                            photoPrincipale.scaleContent = false;
     
                var translation:Array = [photoPrincipale.x, photoPrincipale.x+ 100];
     
                //Variable qui contiendra l'image qui est selectionnée
                var select:String;
     
     
                texteAlt.text = monXML.image[1].attribute("alt");
                texteAlt.setTextFormat(formatTitre);
     
                //On attache le Loader à la scene
                this.addChild(photoPrincipale);
     
                /*Pour les miniatures*/
                for(var i:String in monXML.image) {
                    var uil:UILoader = new UILoader();
                            uil.source = dossierImageMini+monXML.image[i].attribute("src");
                            uil.buttonMode=true;
                            uil.name = i;
                            uil.x = 10;
                            uil.y = 10;
                            uil.y += int((int(i)/3))*90;
                    if(int(i)%3!=0){
                            uil.x += (int(i)%3)*90;
                    }
     
                            uil.width = uil.height = 70;
                            uil.alpha = 0.5;
                            uil.scaleContent= true;
                            uil.autoLoad = true;
     
                            //Les écouteurs sur les miniatures
                            uil.addEventListener(MouseEvent.CLICK,clicImage);
                            uil.addEventListener(MouseEvent.MOUSE_OVER,overImage);
                            uil.addEventListener(MouseEvent.MOUSE_OUT,outImage);
                    this.addChild(uil);
            }
     
            /*Quand on clique sur une miniature...*/
            function clicImage(e:Event):void{
                //e.currentTarget.name correspond à la position de l'image
                //Si l'image sur laquelle on a cliquée est déjà selectionnée, il ne se passe rien....
                if(select == monXML.image[e.currentTarget.name].attribute("src")){
                    return;
                }
     
                select = monXML.image[e.currentTarget.name].attribute("src");
                alt = monXML.image[e.currentTarget.name].attribute("alt");
     
     
                var myTweentText:Tween = new Tween(texteAlt, "alpha", Strong.easeOut, 1, 0, 1, true);
                var myTweenA:Tween = new Tween(photoPrincipale, "alpha", Strong.easeOut, 1, 0, 1, true);
                var myTweenPPW:Tween = new Tween(photoPrincipale, "x", Strong.easeIn, translation[0], translation[1],1, true);
                var myTweenPPA:Tween = new Tween(photoPrincipale, "alpha", Strong.easeIn, 1, 0, 1, true);
                myTweenA.addEventListener(TweenEvent.MOTION_FINISH, changeImage);
     
            }
     
            /*Quand on veut changer d'image (logiquement après avoir cliqué sur une miniature)*/
            function changeImage(e:Event):void{
                //On change la source de l'image
                photoPrincipale.source = dossierImage+select;
     
                //On change le texte descriptif
                texteAlt.text = alt;
                texteAlt.setTextFormat(formatTitre);
     
                //Et la photo arrive de façon élégante
                var myTweenPPA2:Tween = new Tween(photoPrincipale, "alpha", Strong.easeOut, 0, 1, 1, true);
                var myTweenPPW2:Tween = new Tween(photoPrincipale, "x", Strong.easeOut, translation[1], translation[0], 1, true);
                var myTweentText2:Tween = new Tween(texteAlt, "alpha", Strong.easeOut, 0, 1, 1, true);
            }
     
            /*Quand on passe la souris sur une miniature...*/
            function overImage(e:Event):void{
                //Ombre sur miniatures
                var monOmbre:DropShadowFilter = new DropShadowFilter();
                            monOmbre.distance = 3;
                            monOmbre.color = 0x000000;
                            monOmbre.blurX = 5;
                            monOmbre.blurY = 5;
                            monOmbre.quality = 3;
                            e.currentTarget.filters = [monOmbre];
                //Effets cools de transitions                
                var myTweenMA2:Tween = new Tween(e.currentTarget, "alpha", Strong.easeOut, 0.5, 1, 1, true);
                var myTweenMW2:Tween = new Tween(e.currentTarget, "width", Elastic.easeOut, e.currentTarget.width, 75, 1, true);
                var myTweenMH2:Tween = new Tween(e.currentTarget, "height", Elastic.easeOut, e.currentTarget.height, 75, 1, true);
            }
     
            /*Quand on quitte la miniature*/
            function outImage(e:Event):void{
                //Ombre sur miniatures
                var monOmbre:DropShadowFilter = new DropShadowFilter();
                            monOmbre.distance = 0;
                            monOmbre.color = 0x000000;
                            monOmbre.blurX = 0;
                            monOmbre.blurY = 0;
                            monOmbre.quality = 3;
                e.currentTarget.filters = [monOmbre];
                //Effets cools de transitions
                var myTweenMA:Tween = new Tween(e.currentTarget, "alpha", Strong.easeOut, 1, 0.5, 1, true);
                var myTweenMW:Tween = new Tween(e.currentTarget, "width", Elastic.easeOut, e.currentTarget.width, 70, 1, true);
                var myTweenMH:Tween = new Tween(e.currentTarget, "height", Elastic.easeOut, e.currentTarget.height, 70, 1, true);
     
            }
    }
    Voila !!!

    Si quelqu'un peut m'aider...
    Merci beaucoup

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 34
    Par défaut
    Bonjour,

    Tu peux définir ton formatTitre dans finDuChargementXML()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    texteAlt.text = monXML.image[1].attribute("alt");
    var formatTitre:TextFormat = new TextFormat;
    formatTitre.color = monXML.image[1].attribute("col");
    formatTitre.size = 18;
    formatTitre.font = 'cambria';
    formatTitre.align = 'left';
    texteAlt.setTextFormat(formatTitre);
    Bonne journée,
    Romain

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut Merci
    Merci romain pour ta reponse
    seulement
    j'ai ajouter donc ce code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    texteAlt.text = monXML.image[1].attribute("alt");
    var formatTitre:TextFormat = new TextFormat;
    formatTitre.color = monXML.image[1].attribute("col");
    formatTitre.size = 18;
    formatTitre.font = 'cambria';
    formatTitre.align = 'left';
    texteAlt.setTextFormat(formatTitre);
    ...a la place de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var formatTitre:TextFormat = new TextFormat;
    formatTitre.color = 0x000000;        
    formatTitre.size = 18;
    formatTitre.font = 'cambria';
    formatTitre.align = 'left';

    Mais sa ne marche toujours pas,
    flash me retourne deux erreurs :
    1120: Accès à la propriété non définie monXML.
    1120: Accès à la propriété non définie monXML.
    pour ces deux choses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texteAlt.text = monXML.image[1].attribute("alt");
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formatTitre.color = monXML.image[1].attribute("col");
    merci de me consacrer du temps c'est tres aimable

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut re
    Re
    J'ai reussi a appliquer ce que romain m'a dit en cherchant un peu
    le dernier soucis est que 'col' n'est pas parcouru
    c'est a dire:
    formatTitre.color = monXML.image[1].attribute("col");

    le programme actionscript va bien chercher la valeur de l'attribut 'col' dans le XML mais seulement ce dernier ne s'applique pas a toute les images
    du coup toutes les images prennent la couleur de l'image [1], la deuxieme image donc puisque le programme parcours les 'id' en commencant a zero...

    encore un petit bout de chemin et je serais arriver a ce que je voulais...
    Merci pour un dernier effort.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 34
    Par défaut
    En effet...
    dans ce cas, il faudrait remodifier un peu l'organisation de ton code pour mettre la création du formatTitre dans ta boucle for(var i:String in monXML.image) {...}
    Mais en regardant d'un peu plus près ton code, tu as besoin de réutiliser les formatTitre différents plusieurs fois (chaque fois que tu cliques en fait) donc il faut garder une trace de ces différents formatTitre.
    Pour ça tu peux soit faire un tableau associant une image (son id ? sa source ?) à un formatTitre et ensuite dans ton changeImage() reprendre le formatTitre correspondant à la nouvelle image.
    Une autre solution consisterait à créer un nouveau type d'objet pour tes images contenant à la fois l'image et son formatTitre, et à travailler avec ces objets à la place des images.
    Je sais pas si je me suis bien fait comprendre ?

    Romain

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut merci
    ok merci
    j'ai bien compris ce que tu as dit
    je me pencherai sur ce code en debut de semaine prochaine, voyage oblige.
    merci beaucoup de ton aide romain.

Discussions similaires

  1. Appeler un XML a partir d une page PHP/HTML dans Flash
    Par djinlemage dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 27/08/2009, 10h44
  2. [XSL] appel plusieurs xml dynamiquement
    Par laurentibus dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/04/2008, 10h47
  3. xmlns bloque la lecture d'un fichier XML en as3
    Par line6 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 17/03/2008, 11h53
  4. [AJAX] probleme appelle page XML sur autre serveur
    Par ldcarpathes dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2006, 18h35
  5. Appel fichier xml
    Par Laure888 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 24/10/2005, 16h25

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