Je travaille actuellement en projet de recherche sur le développement d'un software de social networking. Mon équipe et moi-même utilisons Flex pour le côté client. Malheureusement nous avons rencontré des problèmes d'instabilité. L'exemple est le suivant: Nous avons un fichier mxml pour l'application principale, un fichier mxml pour un custom component et un fichier xml externe pour obtenir notre information dont voici les contenus :
Main.mxml:
CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comp="*" initialize="serv.send()">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
private function resultHandler(event:ResultEvent):void {
var result:XML = event.result as XML;
if (result.attribute("id").length() != 0)
userID = result.attribute("id");
}
private function faultHandler(event:FaultEvent):void{
Alert.show(event.fault.toString());
}
]]>
</mx:Script>
<mx:uint id="userID" />
<mx:HTTPService id="serv" url="public/xml/test.xml" method="POST" result="resultHandler(event)" fault="faultHandler(event)" resultFormat="e4x" />
<comp:Test id="login" userID="{userID}" />
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comp="*" initialize="serv.send()">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
private function resultHandler(event:ResultEvent):void {
var result:XML = event.result as XML;
if (result.attribute("id").length() != 0)
userID = result.attribute("id");
}
private function faultHandler(event:FaultEvent):void{
Alert.show(event.fault.toString());
}
]]>
</mx:Script>
<mx:uint id="userID" />
<mx:HTTPService id="serv" url="public/xml/test.xml" method="POST" result="resultHandler(event)" fault="faultHandler(event)" resultFormat="e4x" />
<comp:Test id="login" userID="{userID}" />
</mx:Application>
Test.mxml:
CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="50%" creationComplete="update()">
<mx:Script>
<![CDATA[
import mx.controls.Label;
private function update():void {
lab.text = userID.toString();
}
]]>
</mx:Script>
<mx:uint id="userID" />
<mx:Label id="lab" text="error" />
</mx:HBox>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="50%" creationComplete="update()">
<mx:Script>
<![CDATA[
import mx.controls.Label;
private function update():void {
lab.text = userID.toString();
}
]]>
</mx:Script>
<mx:uint id="userID" />
<mx:Label id="lab" text="error" />
</mx:HBox>
test.xml:
CODE
<?xml version="1.0" encoding="utf-8"?>
<test id="13" />
<test id="13" />
Et là, c'est le drame. Le lancement répété de l'application amène de temps en temps à l'affichage de 13 et parfois 0. Nous avons utilisé cet exemple suite à un problème avec notre gestion de login et de session.
Nous sommes confrontés à une impasse donc un peu de lumière sur ce point serait la bienvenue.
Merci