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

Flex Discussion :

Comportement asynchrone de FLEX


Sujet :

Flex

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 169
    Points
    169
    Par défaut Comportement asynchrone de FLEX
    Bonjour,
    Dans un Switch Case, j'appelle une fonction qui met un peu de temps pour finir son traitement.
    Avant de re-boucler sur le Switch Case (que j'ai mis dans un FOR EACH), j'aimerais bloquer le programme jusqu'à ce que la première fonction aura finie son traitement.
    Avez vous une idée pour mon problème?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Si le traitement exécuté dans la boucle est asynchrone et que tu dois attendre la fin du traitement précédent pour exécuter le suivant il faut utiliser une variable de classe qui contiendra un index sur ta collection.
    Tu la positionne à zéro et ensuite tu exécutes ton premier traitement. A la fin de ce traitement tu incrémentes ton index et tu exécutes le second traitement, etc...
    Il faudra utiliser la notion d'événement.
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 169
    Points
    169
    Par défaut
    Merci pour a réponse,
    mais je ne vois comment utiliser la notion d'évenement

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Quel genre de traitement long est-ce que tu exécutes ?
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 169
    Points
    169
    Par défaut
    le traitement n'est pas long, mais j'ai deux animations qui durent 2 secondes.
    je veux lancer la deuxième animation après la fin de la première.
    Ces animations sont réalisées par des fonctions.

    Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Quelle type d'animation ? On gagnerait du temps si tu mettais un extrait de ton code.
    S'il y a un événement qui permet de détecter la fin de l'animation tu ajoutes un listener associé à cet événement qui exécute l'animation suivante.
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 169
    Points
    169
    Par défaut
    Voici à ce que ressemble mon code:

    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
    			switch(choix)
    			{
    				case 1 :	
    					//Traitement
    				break;
     
    				case 2 :	
    					//Traitement
    				break;
     
     
    				case 3 :	
    					//appel d'une fonction qui fait une animation
    				break;
     
     
    				case 4 :
    					//Appel d'une autre fonction qui fait une animation
    				break;	
    			}
    Ce code est appeler dans une boucle qui récupere les données via HTTPService, le problème est visible si le case 3 et le case 4 se suivent.
    L'animation permet de faire déplacer une image d'un point A à un point B, elle prend 2 secondes.

    MErci

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Oui bon j'avais compris le switch, ce que je sais pas c'est le contexte d'appel de ce switch et les traitements effectués...

    Bref pour sérialiser tes animations il faut :
    1- appeler le HTTPService #1
    2- à la réception de la réponse exécuter l'animation 1
    3- à la fin de l'animation appeler le HTTPService #2
    4- à la réception de la réponse exécuter l'animation 2
    etc..

    Ou alors il faut empiler les résultats des HTTPService dans une liste et dépiler cette liste élément par élément. Mais dans ce cas rien ne certifie que les réponses seront reçues dans l'ordre des requêtes.

    C'est tout ce que je peux dire vu le peu d'informations que tu fournis...
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 169
    Points
    169
    Par défaut
    Bonjour,
    Merci pour la réponse. Je ne peux pas mettre le programme sur le Forum.
    Le switch est placé dans une fonction, cette fonction est appelé lors de parssing de HTTPService, dans une boucle FOR EACH.
    Dans la réponse HTTPService, il se peut que deux animations se poursuivent (dans la même réponse HTTPService). Ces animations durent environ une seconde
    Sinon, j'aimerais savoir s'il est possible de bloquer le programme pendant un temps X

    Merci

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Tu n'es pas obligé de mettre tout le programme mais au moins le squelette avec un exemple de ce que tu appelles une animation.

    Il n'est pas possible de bloquer l'exécution d'un programme Flash car dans ce cas il ne se passerait rien et à la fin de la pause le problème serait le même ! Il ne faut pas oublié que le player Flash est mono thread.

    Donc je répète ma réponse initiale :
    Il faut remplacer ta boucle for each par :
    1- définir une variable de classe contenant l'élément courant et lui affecter le premier élément
    2- appeler une fonction qui traite l'élément courant (cf. ta fonction avec le switch).
    3- à la fin de chaque traitement exécuté depuis le switch (et non pas à la fin du switch) appeler une fonction qui incrémente l'élément courant et appelle la fonction switch.

    Le problème est donc de savoir comment détecter la fin de tes animations. Donc je repose la question : peux- tu donner un exemple de ces animations ?
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  11. #11
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Bonjour,

    Dans le cas de figure de ce switch, si une seule variable est true, les autres ne seront pas exploitées, ou analysées.
    Par exemple :
    Si case 1 est "true"
    Le break stoppera le traitement.

    Pourquoi ne pas tester avec un switch sans les break, avec en prime une case default.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Mais non alain31tl ce n'est pas le problème !!

    Le break ne stoppe pas l'animation qui a été lancée !

    Le switch sert à centraliser différents traitements en fonction d'une variable.
    Proposer de supprimer les break ici est pour moi un non sens (sauf si j'ai rien compris..)
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  13. #13
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par jylaxx Voir le message
    ...Le switch sert à centraliser différents traitements en fonction d'une variable....

    Oui, et d'évidence en fonction d'une variable, donc désolé de te contredire Jylaxx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    switch(choix)
    	{
    	case 1 :	
    	//Traitement 1
    	break;
    	case 2 :	
    	//Traitement 2
    	break;
    Le switch s'effectue sur la variable "choix".
    Si elle est égale à case 1, le traitement 1 est effectué et breaké.
    Si elle est égale à case 2, le traitement 2 est effectué et breaké.
    Comment veux-tu attribuer 4 valeurs différentes à une seule variable ?

    Par contre, plusieurs traitements, oui.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    switch(choix)
    	{
    case 1 :	
    Traitement 1
    Traitement 2
    Traitement 3
    break;
    
    case 2 :	
    Traitement 2
    Traitement 4
    break; 
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Oui mais le problème n'est pas celui là...

    Le switch est appelé depuis une boucle qui évalue une succession de valeurs pour "choix". Et une animation différente est lancée en fonction de cette variable.

    Ta solution résout d'autant moins le problème que le fait d'exécuter les deux animations successivement dans le même case ne va pas faire que l'animation 2 attendra la fin de l'animation 1 pour s'exécuter. Et c'est précisément ce que l'on cherche à faire...
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  15. #15
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut Evenement
    Bonjour, il se peut que tu dispose d'un ecouteur sur un evenement de type endEffectstarted ou quelque chose comme ça qui te permet de savoir si ton animation est finis ou pas, du coup tu associe une methode a cet ecouteur et tu lance la deuxieme animation c'est comme ca que je vois les choses

    Bon courage
    http://www.m-ataf.com (En cours de construction)

  16. #16
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par jylaxx Voir le message
    ....le fait d'exécuter les deux animations successivement dans le même case ne va pas faire que l'animation 2 attendra la fin de l'animation 1 pour s'exécuter....
    C'est vrai et j'adhére, mais je voulais surtout souligner la pertinence et la fonction d'un break dans un switch, tel qu'il nous est présenté.

    Alors peut-être que, et puisque que le switch s'execute dans une boucle :

    Exemple, hum!... shématique :

    //Boucle
    switch(choix)
    {
    case 1 :
    Traitement 1
    choix=2;
    break;


    case 2 :
    Traitement 2
    choix=3;
    break;

    case 3 :
    Traitement 3
    choix=1;
    break;
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Oui samy c'est ce que je m'évertue à dire depuis le début mais j'attendais de savoir de quelle type d'"animation" il s'agissait pour illustrer mon propos par un exemple concret. En effet je ne sais pas si l'animation est un fichier flash, un effet ou autre...

    Non alain cette solution ne change rien !


    Mais bon on perd son temps puisque le principal intéressé est absent...
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  18. #18
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par jylaxx Voir le message
    ...Mais bon on perd son temps puisque le principal intéressé est absent...
    En effet, en plus des précisions restreintes, mais ce n'est pas grave.
    On s'évertue à extrapoler des solutions, celà pourra servir à d'autres....et à nous-même.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 169
    Points
    169
    Par défaut
    Merci pour vous réponse!
    J'ai trouvé un beug dans mon programme, après l'avoir corriger, j'ai résolu le problème.
    J'aimerais savoir comment faire un écouteur sur événement, est comment définir un événement?

    Merci d'avance

  20. #20
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    luilui,

    il faut utiliser les méthodes dispatchEvent et addEventListener pour propager et écouter les événements. Ensuite tu peux créer tes propres classe qui héritent de la classe Event.

    PS: à l'avenir détails ton propos, ne te contente pas de poser une question, un forum c'est de l'échange pas que de la pêche aux informations dont tu as besoin.

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [FB4] Customisation du comportement du designer flex
    Par tiboutchu dans le forum EDI/Outils
    Réponses: 0
    Dernier message: 14/04/2011, 12h25
  2. [CS5] Flex : comportement bizarre
    Par Madfrix dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 17/10/2010, 12h00
  3. [CS5] Comportement asynchrone ?
    Par Madfrix dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 06/10/2010, 00h14
  4. Connexion asynchrone RS232 Comport
    Par thelife dans le forum Débuter
    Réponses: 2
    Dernier message: 07/04/2010, 08h10
  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