Bonjour,
J'ai une vue que j'appelle "maj_intermediaire" dans laquelle j'ai une State. Voilà le script MXML:
Comme vous avez du le remarquer dans la ligne
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>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 : <mx:Button label="Upload" click="{upload()}" horizontalCenter="-130" verticalCenter="-130" id="button1"/>
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
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; }
"formulaire" étant le nom de mon state.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.application.setCurrentState('formulaire');
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.
Partager