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

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

    Informations forums :
    Inscription : mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut [FLASH MX2004] [AS2] Attendre la fin de chargement d'un fichier avant de continuer.
    Bonjour,

    Dans le code suivant le constructeur appelle une methode qui contient une fonction(sur l'evenement onLoad) qui ouvre un fichier XML. Cette fonction affiche 1 dans la fenetre lorsquelle est executee.
    Je souhaiterais qu'il attende d'avoir fini de charger le fichier pour continuer.
    Pour que vous voyez l'ordre d'execution, je vous dirai qu'il m'affiche :
    2
    1

    Et biensur ... je voudrais :
    1
    2
    Cela signifie qu'il sort de la fonction getXMLMenu() avant meme d'avoir chargé le fichier, et je veux empecher cela.
    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
    class Page2{
        //declare class attributes
        public var _xmlMenu:String;
        private var _document:XML;
        private var myInterval;
     
        //Constructor that
        function Page2(xmlMenu:String){
            _xmlMenu = xmlMenu;
            getXMLMenu();
            trace("2");
        }
     
     
        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();
     
            var instance = this;
            //trace("testLoaded: "+_document.loaded);
            // Once the file is loaded ...
            _document.onLoad=function(){
                trace("1");
            }
        }    
    }
    Je me suis pas mal penche sur setInterval sans succes. Je sais l'utiliser, mais je n'arrive pas vraiment a determiner comme elle peut servir mon probleme.

    Merci a vous.
    J'aime les gâteaux.

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

    Informations forums :
    Inscription : mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Pour le moment je vais essayer de créer une nouvelle fonction "ApresChargementFichierXML" que j'appelle dans le OnLoad. Si quelqu'un a une meilleure idée qu'il n'hesite pas. Car ma bidouille ne sera pas toujours applicable.

    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
    class Page2{
        //declare class attributes
        public var _xmlMenu:String;
        private var _document:XML;
        private var myInterval;
     
        //Constructor that
        function Page2(xmlMenu:String){
            _xmlMenu = xmlMenu;
            getXMLMenu();
        }
     
        private function afterLoadXML(){
             trace("2");
        }
     
     
        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();
     
            var instance = this;
            //trace("testLoaded: "+_document.loaded);
            // Once the file is loaded ...
            _document.onLoad=function(){
                trace("1");
                instance.afterLoadXML(); //appel de la nouvelle fonction
            }
        }    
    }
    J'aime les gâteaux.

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

    Informations forums :
    Inscription : mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Decidement de poster ca donne des idées ...

    Voici une solution qui semble bien fonctionner :

    de l'endroit ou vous declarez une instance de classe mettez :
    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
    var menuPage = new Page2(xmlFile);
    myInterval = setInterval(isLoadedXML, 10);
     
    function isLoadedXML(){
        trace("Main.isLoadedXML Drapeau: "+menuPage._Drapeau);
        if (menuPage._Drapeau == true){
            trace("c'est a true");
            clearInterval(myInterval); //on efface l'interval pour arreter de tourner en rond
            afterLoadedXML(); //on appelle la fonction qui se charge du reste du traitement une fois que le fichier est chargé        
        }
    }
     
    function afterLoadedXML(){
        trace("je continue mon traitement ....");
    }
    Et voici 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
    26
    class Page2{
        //declare class attributes
        public var _xmlMenu:String;
        private var _document:XML;
        public var _Drapeau = false;
     
        //Constructor that
        function Page2(xmlMenu:String){
            _xmlMenu = xmlMenu;
            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();
            trace("0");
            var instance = this;
            // Once the file is loaded ...
            _document.onLoad=function(){
                trace("1");
                instance._Drapeau = true;//j'indique que le fichié est chargé
            }
        }    
    }
    Bon dans cet exemple j'ai mis des attributs de classe en public ... pour faciliter les tests. Il faut adapter.

    Mais je n'en suis pas complement satisfait, donc toute idée est la bienvenue.
    J'aime les gâteaux.

  4. #4
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : août 2002
    Messages : 4 376
    Points : 8 795
    Points
    8 795
    Par défaut
    Salut,

    perso, c'est ta solution 2 que j'utilise

    Ps: Peux-tu ajouter le tag de la version que tu utilises dans le titre de ton 1er message ? Merci
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

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

    Informations forums :
    Inscription : mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    On peut egalement utiliser ce systeme dans la classe directement.

    Il suffit d'ecrire la fonction isLoadedXML dans la methode getXMLMenu. Et biensur de mettre le setInterval dans getXMLMenu, juste apres avoir appele la methode Load de l'objet LoadVars.

    Cela peut servir dans le constructeur par exemple si l'on veut attendre la fin du chargement d'un fichier dont le contenu sera utilise dans les lignes suivantes.
    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 : 38
    Localisation : France

    Informations forums :
    Inscription : mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Citation Envoyé par freegreg
    perso, c'est ta solution 2 que j'utilise
    Merci pour ce commentaire ! Ainsi je continue mon developpement l'esprit tranquille.
    J'aime les gâteaux.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Je cherche à faire un peu la même chose que vous, avec un fichier XML. J'ai plusieurs fichiers à charger, et la solution que vous proposez donne plusieurs fonctions imbriquées : alourdie un peu le code.

    J'ai cherché, mais je n'ai rien trouvé qui permette de :

    - charger le fichier 1
    - attendre la fin du chargement

    - charger le fichier 2
    - attendre la fin du chargement

    - etc ...

    - traiter les données

    Connaissez-vous une autre solution ?

    Merci,

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

Discussions similaires

  1. Attendre la fin du chargement d'une page avant d'en charger une autre
    Par La Mite dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2011, 18h39
  2. Réponses: 2
    Dernier message: 18/02/2010, 14h45
  3. attendre la fin de chargement d'une page avant de continuer le script
    Par jibouze dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/06/2006, 10h50
  4. [FLASH MX2004] [AS2] Dialogue entre 2 SWF- tellTarget ???
    Par Geilgestorm dans le forum ActionScript 1 & ActionScript 2
    Réponses: 11
    Dernier message: 24/10/2004, 23h07
  5. Attendre la fin du chargement de la page dans un WebBrowser
    Par core1 dans le forum Web & réseau
    Réponses: 5
    Dernier message: 15/06/2003, 05h12

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