Partage
  • Partager sur Facebook
  • Partager sur Twitter

[ActionScript]AS-XML-PHP

Problème de chargement

Sujet résolu
    13 décembre 2006 à 9:39:12

    Bonjour à tous !

    Je ne poste jamais avant d'avoir vraiment chercher comme un fou et là c'est le cas...
    Je vous explique en gros, je crée un module avec au dépard un ciel vide mais qui plus tard peut être complèter d'étoiles par les utilisateurs. Chaque utilisateur à la possibilité d'ajouter une étoile en y attachant un message. Donc bien évidemment il y a interraction avec une base de donnée. Je fais ça de cette manière :

    - Au lancement flash lance un fichier php qui génère un fichier xml par rapport à la base de donnée
    - Flash charge le fichier xml
    - Flash lit le xml et crée le ciel selon les données du fichier

    Lorsqu'un utilisateur ajoute ou modifie une étoile il faut bien entendu recharger le ciel :

    - Flash lance un fichier php qui ajoute ou met à jour l'etoile
    - Flash supprime les anciennes étoiles
    - Flash lance à nouveau le fichier pour regénérer le fichier xml
    - Flash recrée le ciel

    C'est bien beau tout ça mais comment je fais au niveau du code ? =>


    //Mise à jour du fichier xml depuis la db
    function update_xml(create_ciel){
                   
            var load_update_xml_file = new LoadVars();
            var chargement_xml_file = new LoadVars();
           
            chargement_xml_file.onLoad = function() {if(create_ciel)_level0.load_xml_file();}
            load_update_xml_file.sendAndLoad("fichier.php", chargement_xml_file, "POST");
    }

    function load_xml_file(){
            _level0.extractionXML = new XML (); //On crée un nouvelle objet XML
            _level0.extractionXML.ignoreWhite = true; //On ignore les blancs

             _level0.extractionXML.onLoad = function (success){
                    if (success)_level0.create_ciel();
             }
             _level0.extractionXML.load ("fichier.xml"); //On load le fichier xml
    }
    function create_ciel(){
    //création du ciel
    }
    function update_star(refresh_ciel,id,...){
            //createEmptyMovieClip("send_update_star", this.getNextHighestDepth());
           
            var load_update_star_file = new LoadVars();
            var chargement_update_star_file = new LoadVars();
           
            load_update_star_file.id = id;
            ...
           
            chargement_update_star_file.onLoad = function(success_load_update_star_file) {
                    if (success_load_update_star_file) {if(refresh_ciel)_level0.refresh_all();}
            }
            load_update_star_file.sendAndLoad("fichier.php", chargement_update_star_file, "POST");

    }
    //Refresh
    function refresh_all(){
            //Supression des clips
            for (i=0;i<_level0.extractionXML.childNodes[0].childNodes.length;i++) {
                    removeMovieClip(_level0["star_"+i]);
            }
            //On met à jour le fichier xml avec création du ciel
            _level0.update_xml(true);
    }
    //Première lecture
    //On met à jour le fichier xml
    _level0.update_xml(true);



    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

    <ciel>
     <etoile>
      <id_etoile>1</id_etoile>
      ...
     </etoile>
     <etoile>
      <id_etoile>2</id_etoile>
      ...
     </etoile>
    </ciel>


    Alors voilà si vous avez déja des remarques par rapport à ça je suis preneur ! Mais mon problème est le suivant : Tout marche bien 9/10 mais quelques fois lors de l'ajout d'une etoile celle-ci n'est pas crée. Dans la fonction de création du ciel j'ai fais des tests et il ne prend effectivement pas en compte cette étoile qui ne fait donc pas partie de la ressource xml. Maintenant ce qui est bizarre c'est que si j'ouvre le fichier xml celle-ci y figure. Mon idée : Le fichier xml est chargé avant d'avoir été modifié. Mais je ne vois pas comment, je fais à chaque étape un check sur le chargement avec onLoad...

    Argg aider moi... :)

    A+ Werzzer
    • Partager sur Facebook
    • Partager sur Twitter
      13 décembre 2006 à 15:31:25

      Salut :)

      Je serais toi, je tenterais peut être d'effacer la variable qui contient le contenu du XML avant de le recharger, car si j'ai bien compris, je crois que tu charge toujours la même variable avec ce fichier...
      Donc vide son contenu avant de la réalimenter, ca permettra peut être un meilleur fonctionnement ?
      • Partager sur Facebook
      • Partager sur Twitter
        13 décembre 2006 à 21:22:31

        Merci YanisLiadon pour ta remarque, j'ai rajouté une rédéclaration à chaque fois pour être sûr ! Mais j'ai trouvé ce qui n'allait pas...le CACHE ! Faut toujours s'en méfier de celui-là en tout cas il m'aura bien embêté sur ce coup là... alors pour forcer le détournement du cache, j'utilise la méthode standard de la variable bidon :


        //Cache
        var date = new Date();
        _level0.extractionXML.load("ciel.xmlt="+date.getTime()); //On load le fichier xml


        Voilà

        Merci quand même :)

        edit : je n'arrive pas mettre mon bout de code sur le forum en code "actionscript", ça fait tout bugger.
        edit : entre "ciel.xml" et "t" il y a un point d'interogation... (il disparait quand je poste le mess)
        • Partager sur Facebook
        • Partager sur Twitter

        [ActionScript]AS-XML-PHP

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown