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 :

URLLoader en synchrone


Sujet :

ActionScript 3

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 66
    Points : 120
    Points
    120
    Par défaut URLLoader en synchrone
    Bonjour,

    J'ai un petit problème. Je voudrais appelé une page web en mode synchrone.
    En effet pour le moment j'ai ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function appel():void{
        var request:URLRequest = new URLRequest (url);
        var loader:URLLoader = new URLLoader(request);
        loader.addEventListener(Event.COMPLETE, onComplete);
        loader.load(request);
    }
     
    private function onComplete (event:Event):void{
        //Utilisation des données
    }
    et ce que je voudrais c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function appel():String{
        var request:URLRequest = new URLRequest (url);
        var loader:URLLoader = new URLLoader(request);
        loader.addEventListener(Event.COMPLETE, onComplete);
        loader.load(request);
        return loader.data;
    }
    J'ai cherché sur le net mais j'ai pas trouvé. A croire que c'est impossible Auriez vous une méthode pour faire cela?


    Merci d'avoir lu ce message

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    la base de Flash ce sont ses évènements ... surtout pour ton exemple qui demande de charger un fichier externe (ca prend du temps+risque d'erreurs).
    donc déclencher la suite du code dans ton "onComplete" est la bonne solution.

    ton 2eme code est faux : le "loader.data" à la valeur null puisque le fichier n'est pas encore chargé.
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 66
    Points : 120
    Points
    120
    Par défaut
    Justement, ce que je voudrais c'est attendre la fin du chargement avant de commencer la suite.
    Avec la première méthode je suis obligé de découper mon code en deux en faisant:
    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
     
    public function appel():void{
        var request:URLRequest = new URLRequest (url);
        var loader:URLLoader = new URLLoader(request);
        loader.addEventListener(Event.COMPLETE, onComplete);
        loader.load(request);
    }
     
    private function onComplete (event:Event):void{
        this.txtXXX.text=event.target.data;
    }
     
    //Appelée lors d'un click sur un bouton
    public function onClick(event:Event):void{
        this.appel();
    }
    Et si j'ai besoin de travailler avec une valeur temporaire, je dois la mettre en tant qu'attribut de ma classe.

    Ça sera plus sympa dans mon cas d'attendre une réponse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function appel():String{
        var request:URLRequest = new URLRequest (url);
        var loader:URLLoader = new URLLoader(request);
        loader.addEventListener(Event.COMPLETE, onComplete);
        loader.load(request);
        /****** Là je voudrais attendre la réponse *********/
        return loader.data;
    }
     
    //Appelée lors d'un click sur un bouton
    public function onClick(event:Event):void{
        this.txtXXX.text=appel();
    }

    Merci d'avoir lu ce message.

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    non, il n'y a pas de solution pour bloquer l'appli, il faut obligatoirement jouer avec les événements.
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 66
    Points : 120
    Points
    120
    Par défaut
    Erf Mauvaise nouvelle mais bon. On fera avec

    Merci de ta réponse.

    PS: Comment on met résolut à la discutions? J'ai cherché mais je trouve pas Décidément c'est pas ma semaine

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    tout en bas de la discussion, au milieu, il y a un bouton "résolu"
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

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

Discussions similaires

  1. Synchronize bloquant dans un thread
    Par bencot dans le forum Langage
    Réponses: 3
    Dernier message: 20/08/2004, 16h42
  2. [thread] synchronize ou pas ?
    Par dvarrel dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2004, 19h09
  3. [Astuce][Thread]Utilisation des blocs synchronized
    Par Pill_S dans le forum Concurrence et multi-thread
    Réponses: 14
    Dernier message: 21/07/2004, 14h14
  4. [Thread] Synchronize
    Par Pedro dans le forum Langage
    Réponses: 9
    Dernier message: 06/07/2004, 13h30
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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