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 :

AS3 : function xml et timeline


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Par défaut AS3 : function xml et timeline
    Bonjour,

    ca fait plusieurs jours que je me prend la tête pour faire un truc banal pour ma boite et je m'en sors pas. je suis débutant et autodidacte mais même après plusieurs heures de lecture de fofo et tuto divers, rien à faire...

    l'idée :

    sur une time line de 30 frame, faire défiler un texte issue d'un fichier xml et a chaque fois que je boucle, le texte affiché correspond a l'occurence suivante du fichier xml.
    ce xml serait raffraichit régulièrement pour les nouvelles infos.

    exemple de xml :

    <root>
    <MAGASIN>
    <ENSEIGNE> enseigne 1 </ENSEIGNE>
    <MESSAGE> message à afficher 1 </MESSAGE>
    </MAGASIN>
    <MAGASIN>
    <ENSEIGNE> enseigne 2 </ENSEIGNE>
    <MESSAGE> message à afficher 2 </MESSAGE>
    </MAGASIN>
    </root>


    Principe du AS3 que je pensais :

    sur la frame 0, chargement du fichier XML et pose des données dans un ARRAY
    sur la frame 1, j'affiche la première occurence
    interpolation jusqu'à la frame 30 ou j'incrémente une variable et je fait un gotoandplay(1) pour boucler et si j'arrive au nombre d'occurence du fichier, je repart à 0 pour recharger le xml avec eventuellement de nouvelles données, etc..

    j'arrive a charger le xml et alimenter l'array mais je perds mes données dès que je sors de ma fonction de chargement xml et si je fait un appel d'une seconde fonction en frame 1 pour afficher, je ne suis pas capable de lire le reste a la prochaine boucle.


    je ne sais plus quoi faire, help me plzz

    merci,
    Emmanuel.

  2. #2
    Membre expérimenté Avatar de gustave02
    Homme Profil pro
    aucune
    Inscrit en
    Février 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Février 2013
    Messages : 162
    Par défaut
    bonjour
    je pense que tu instancie ("créer") ta variable au mauvais endroit.

    si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function truc():void{  var machin:uint = 12 ; }
     
    truc();
     
    trace(machin);
    tu auras un code erreur 1120:accés à la propriété non définie machin car machin est créer dans la fonction et machin est éliminer a la sortie de la fonction.

    si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var machin:uint;
     
    function truc():void{  machin = 12 ; }
     
    truc();
     
    trace(machin);
    donne dans le panneau de sortie 12;

    c'est pareil avec toutes les sortes de variables meme un Array ou un Xlm

    ok?
    @+gustave02

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Par défaut
    bonjour,

    merci de ta réponse.

    j'ai bien lu celà, les variables doivent être déclaré hors fonction pour etre utilisable dedans et dehors de la fonction

    sauf.. ben que çà fonctionne pas dans mon cas pour l'array

    le code qui est en frame 0:


    var i:Number = 0;

    var myXML:XML = new XML();
    var fichier:Array = new Array();
    var myLoader:URLLoader = new URLLoader();
    myLoader.load(new URLRequest("c:/temp/sample.xml"));
    myLoader.addEventListener(Event.COMPLETE, processXML);

    function processXML(e:Event):void
    {

    myXML = new XML(e.target.data);



    for (i = 0; i < myXML.Alerte.length(); i++)
    {
    fichier.push(myXML.Alerte.Incident[i]);

    }

    }

    trace(fichier[0]);

    le array fichier se charge bien dans la fonction mais or de la fonction j'ai plus rien (Problème 1 est attendu) :

    dedans :
    Les polices doivent être incorporées pour tous les textes pouvant être modifiés à l'exécution, hormis pour les textes dont le paramètre "Utiliser les polices de périphérique" est activé. Utilisez la commande Texte > Incorporation de polices pour incorporer les polices.
    Problème 1


    dehors
    Les polices doivent être incorporées pour tous les textes pouvant être modifiés à l'exécution, hormis pour les textes dont le paramètre "Utiliser les polices de périphérique" est activé. Utilisez la commande Texte > Incorporation de polices pour incorporer les polices.
    undefined



    je ne comprend pas pourquoi j'ai un undefined....

    le fichier xml :
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <root>
    <Alerte>
    <Enseigne>Magasin 1</Enseigne>
    <Incident>Problème 1</Incident>
    </Alerte>
    <Alerte>
    <Enseigne>Magasin 2</Enseigne>
    <Incident>Problème 2</Incident>
    </Alerte>
    </root>


    Merci,
    Emmanuel.

  4. #4
    Membre expérimenté Avatar de gustave02
    Homme Profil pro
    aucune
    Inscrit en
    Février 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Février 2013
    Messages : 162
    Par défaut
    j'ai vu ton code
    tout bien. mais y a un truc que tu prends pas en compte et c'est la ton erreur.

    le truc c'est le temps de chargement du XML
    je reprend ton code avec explication.

    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
     
    ///var i:Number = 0;//ça c'est nul je vire car la class number est prévu pour un chiffre qui a une virgule.
    //ici i n'aura jamais de virgule et pas  besoin de garder ça valeur.
     
    //var myXML:XML = new XML();// ça je vire car tu transforme ton XML en tableau 
     
    var fichier:Array = new Array();// OK car c'est le tableau qui a les infos que veut conserver
     
    var myLoader:URLLoader = new URLLoader(); /// le chargeur
    myLoader.load(new URLRequest("c:/temp/sample.xml")); // l'adresse
    myLoader.addEventListener(Event.COMPLETE, processXML);// appel de la fonction quand le chargement est termine.
     
    function processXML(e:Event):void { // la fonction qui sera réalisée que quand le chargement est terminé et pas avant
    var myXML:XML  = new XML(e.target.data);
     
    for (var i:uint; i < myXML.Alerte.length(); i++)
    {
    fichier.push(myXML.Alerte.Incident[i]); // tu rempli ton tableau 
     
    }
     
    }
     
    trace(fichier[0]); // tu fais un trace de ton tableau mais tu n'as pas encore chargé le fichier XML c'est entrain mais pas fini la fonction "processXML"('mal nommée "completXML" serait plus juste) n'a pas été réalisée
    pour prouver que j'ai raison j'ai fait un petit test

    j'ai mis l'exemple en ligne et tu peux avoir accès au fla

    http://www.citroen-france-tours-nord...manounours.htm

  5. #5
    Membre expérimenté Avatar de gustave02
    Homme Profil pro
    aucune
    Inscrit en
    Février 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Février 2013
    Messages : 162
    Par défaut
    tu dis que tu as l'erreur

    "Les polices doivent être incorporées pour tous les textes pouvant être modifiés à l'exécution, hormis pour les textes dont le paramètre "Utiliser les polices de périphérique" est activé. Utilisez la commande Texte > Incorporation de polices pour incorporer les polices.
    Problème 1"

    donc soit tu intégré un police de texte

    ou tu clique sur ton champ de texte et tu vas la propriete comme sur la photo ou dans le fla de demo
    Nom : i.png
Affichages : 202
Taille : 274,4 Ko

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Par défaut
    Bonjour,
    merci de votre précieuse aide car jamais je n'aurai trouvé seul.

    Du coup j'ai adapté comme tu indiquais le code via le fla, et ca fonctionne !
    je vous donne le résultat :

    frame 0

    import flash.events.Event;
    var n:uint=0;
    var l:uint=0;

    var fichier:Array = new Array();


    function charge():void{
    var myLoader:URLLoader = new URLLoader();
    myLoader.load(new URLRequest("c:/temp/sample.xml"));
    myLoader.addEventListener(Event.COMPLETE, processXML);
    }



    function processXML(e:Event):void{
    var myXML:XML = new XML(e.target.data);
    l=myXML.Alerte.length();
    for (var i:uint; i < l; i++)
    {
    fichier.push(myXML.Alerte.Incident[i]);
    }


    }

    function affichage(e:Event):void{
    desctext.text=fichier[n];
    }

    charge();

    => je charge mon xml ainsi que mon tableau.. je déclare également la fonction affichage qui sera appelé via un event sur la frame 2
    mes 2 variables n & l :
    n = la position du tableau qui m'intéresse d'afficher
    l = le nombre d'incident a exploiter dans mon xml

    frame 2 :

    this.addEventListener(Event.ENTER_FRAME, affichage);
    => j'ai adapté ton code car toi tu faisais par clic de souris, moi ca doit être automatique.




    le texte défile de haut en bas via boite de texte dynamique en interpolation (ici desctext)

    frame 49
    if (n==l-1) {
    charge();
    n=0;
    } else {
    n++;
    }
    gotoAndPlay(2);

    => si j'arrive au bout du xml (n = l-1 car je commande à 0), je recharge mon xml et réinitialise ma variable n
    sinon j'incrémente ma varianle n et je retourne en frame 2 réactualiser l'affichage de mon texte dynamique


    le code est encore brouillon mais clair que c'est un grand pas que vous m'avez fait.

    pour le pb de police de caractère, la solution donnée a fonctionné.

    Merci
    Je vous donnerai le final dès que celà sera fait


    Emmanuel.

Discussions similaires

  1. Créer un site flash complet en AS3 et xml
    Par design7 dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 11/02/2010, 18h36
  2. [AS3] Wave Form, Timeline sous form spectre
    Par bolo dans le forum Flash
    Réponses: 2
    Dernier message: 16/05/2007, 17h59
  3. [AS3] Sérialisation Classe en XML
    Par goldorax113 dans le forum ActionScript 3
    Réponses: 6
    Dernier message: 25/11/2006, 17h43
  4. [AJAX] Réponse XML - Functions Javascript
    Par ..:: Atchoum ::.. dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 24/01/2006, 03h02

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