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 :

Changement d'état au click sur un bouton


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Par défaut Changement d'état au click sur un bouton
    Bonjour,

    J'ai une vue que j'appelle "maj_intermediaire" dans laquelle j'ai une State. Voilà le script MXML:

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" alpha="0.2" width="100%" height="100%" showEffect="{IrisEffectId}" horizontalCenter="0">
    	<mx:states>
    		<mx:State name="formulaire">
    			<mx:RemoveChild target="{textarea1}"/>
    			<mx:RemoveChild target="{button1}"/>
    			<mx:RemoveChild target="{label1}"/>
    			<mx:AddChild position="lastChild">
    				<mx:Panel title="Un simple formulaire de contact" horizontalCenter="0" verticalCenter="0">
    				           <mx:Form>    
    				                <mx:FormItem label="Votre nom et prénom" required="true">
    				                   <mx:TextInput id="username"/>
    				                </mx:FormItem>
     
    				                <mx:FormItem label="Votre adresse mail" required="true">
    				                   <mx:TextInput id="mail"/>
    				                </mx:FormItem>
     
    				                <mx:FormItem label="Sujet" required="true">
    				                   <mx:TextInput id="subject"/>
    				                </mx:FormItem>
     
    				                <mx:TextArea id="content" width="100%" height="150"/>
     
    				                <mx:Box horizontalAlign="center">
    				                   <mx:Button id="send" label="Envoyer" click="onValid(event)"/>
    				                </mx:Box>
    				           </mx:Form>
    				    </mx:Panel>
    			</mx:AddChild>
    			<mx:RemoveChild target="{label2}"/>
    		</mx:State>
    	</mx:states>
     
    <!--Effet permettant de rendre les transitions de l'interface plus douces-->
    	<mx:Iris id="IrisEffectId" duration="350"/>
     
    <!-- Présentation graphique -->
     
    <mx:Label text="Transfert des fichiers" styleName="titre2" horizontalCenter="0" verticalCenter="-181" id="label2"/>
    <mx:HRule width="327" horizontalCenter="0" verticalCenter="-150"/>
    <mx:Button label="Upload" click="{upload()}" horizontalCenter="-130" verticalCenter="-130" id="button1"/>
     
    <mx:TextArea width="327" height="134" id="textarea1" horizontalCenter="0" verticalCenter="-44"/>
    <mx:Label text="Fichiers CSV uniquement" horizontalCenter="-5" verticalCenter="-130" id="label1"/>
     
       <!-- RemoteObject: accès service distant AMFPHP -->
    	<mx:RemoteObject id="ROService"	showBusyCursor="true" 
    		source="classif_amfphp.traitement" destination="amfphp">
    		<mx:method name="traitement_fichier" result="traitement_fichierResult(event)" />
    	</mx:RemoteObject>
     
    	<!-- On fait appel au fichier ActionScript contenant toutes les fonctions 
    	et les packages Actionscript utilisés  -->
    	<mx:Script source="../actionscript/amfphp/upload2.as"/>
    	<mx:Script source="../actionscript/amfphp/demande_maj.as"/>
     
    </mx:Canvas>
    Comme vous avez du le remarquer dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    :
    <mx:Button label="Upload" click="{upload()}" horizontalCenter="-130" verticalCenter="-130" id="button1"/>
    je fais appel à une fonction "upload" (permettant de transférer un fichier vers le serveur) qui est décrite dans le fichier Actionscript comme ceci:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    /* On fait appel aux différents packages ActionScript utilisés */
    import flash.events.DataEvent;
     
    import mx.collections.ArrayCollection;
    import mx.controls.Alert;
    import mx.rpc.events.ResultEvent; // Personnaliser le curseur "busy"
     
    /* Déclaration des variables */
    public var fileRef:FileReference = new FileReference();
     
    public function upload():void 
    {
    	 // listen for the file selected event
    	 // listen for the upload complete event
    	fileRef.addEventListener(Event.SELECT, selectHandler);
    	fileRef.addEventListener(Event.COMPLETE, completeHandler);
    	fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteHandler);
     
    	// browse for the file to upload
    	// when user selects a file the select handler is called
    	try {
    	     var success:Boolean = fileRef.browse();
    	     Application.application.setCurrentState('formulaire');
    	}
    	catch (error:Error) {
    	     trace("Unable to browse for files.");
    	}
    }
     
    // when a file is selected you upload the file to the upload script on the server
    public function selectHandler(event:Event):void {
    // var request:URLRequest = new URLRequest("http://jay/flex/upload/file_upload.php")
    //var request:URLRequest = new URLRequest("http://192.168.2.101/jay/flex/upload/file_upload.php")
    var request:URLRequest = new URLRequest("http://expresso/classif/test/flex/uploads/file_upload2.php")
    try {
    // upload file
    fileRef.upload(request);
    //textarea1.text = "uploading " + fileRef.name + "...";
    textarea1.text = fileRef.name;
     
    //Alert.show( "Upload du fichier fileRef.name réalisé et accepté");
     
    }
    catch (error:Error) {
    trace("Unable to upload file.");
    }
    }
     
    // dispatched when file has been given to the server script. does not receive a response from the server
    public function completeHandler(event:Event):void {
    Alert.show("Fichier bien transféré sur le serveur");
    }
     
    /* Déclaration des variables faisant le lien avec les vues */
    [Bindable]
    private var fichierAC: ArrayCollection;
     
    // méthode de récupération de tous les joueurs
    private function traitement_fichierResult(evt:ResultEvent):void
    {
    	fichierAC = ArrayCollection(evt.result);
    }
     
    /*private function initialisation():void 
    {
     
    	fileRef = new FileReference();
    	fileRef.addEventListener(Event.SELECT, selectHandler);
    	fileRef.addEventListener(Event.COMPLETE, completeHandler);
    	fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteHandler);
    	//ROService.upload_fichier();
    	//datagrid_players.addEventListener(DelEvent.DEL_PLAYER, delListPlayers);
    }  */
     
    // dispatched when file has been uploaded to the server script and a response is returned from the server
    // event.data contains the response returned by your server script
    public function uploadCompleteHandler(event:DataEvent):void {
    trace("uploaded... response from server: \n" + String(event.data));
    textarea1.text += event.data as String;
    }
    Ce que j'aimerais faire c'est changer de State dès que mon fichier est transféré vers le serveur. J'ai essayé alors en ajoutant la ligne dans mon code actionscript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.application.setCurrentState('formulaire');
    "formulaire" étant le nom de mon state.
    La résultat c'est que le fichier est bien transféré au serveur mais il n'y a pas de changement de state.

    Avez vous des idées?
    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2004
    Messages : 35
    Par défaut
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.currentState="formulaire"
    Edit: oups, dans ton cas c plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.application.currentState = "formulaire"

  3. #3
    Membre émérite
    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
    Par défaut
    C'est pas très clair comme explications..

    C'est apparemment le currentState de cette "vue" (instance de l'objet dérivé de canvas) qu'il faut modifier et non pas celui de l'application...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Par défaut
    Citation Envoyé par anfalsh Voir le message
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.currentState="formulaire"
    Merci pour ton aide anfalsh. Cette ligne a résolu mon petit problème

    En effet, j'ai modifié ma fonction "selectHandler" comme ceci:
    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 selectHandler(event:Event):void {
    // var request:URLRequest = new URLRequest("http://jay/flex/upload/file_upload.php")
    //var request:URLRequest = new URLRequest("http://192.168.2.101/jay/flex/upload/file_upload.php")
    var request:URLRequest = new URLRequest("http://expresso/classif/test/flex/uploads/file_upload2.php")
    try {
    // upload file
    fileRef.upload(request);
    //textarea1.text = "uploading " + fileRef.name + "...";
    textarea1.text = fileRef.name;
    this.currentState="formulaire";
    //Alert.show( "Upload du fichier fileRef.name réalisé et accepté");
    }
    catch (error:Error) {
    trace("Unable to upload file.");
    }
    }

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

Discussions similaires

  1. [JComboBox] Ouverture de déroulant par click sur un bouton
    Par oursblanc dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 06/02/2006, 14h16
  2. Détecter click sur le bouton de l'application dans Taskbar
    Par bob2553 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 22/08/2005, 22h34
  3. Réponses: 2
    Dernier message: 26/07/2005, 15h35
  4. Automatiser le click sur le bouton d'un msgbox
    Par rootdaoud dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/05/2005, 10h31
  5. click sur le bouton + de jdbnavtoolbar
    Par hamido dans le forum JBuilder
    Réponses: 4
    Dernier message: 28/05/2004, 00h10

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