Une fonction que je trouvais pratique en ActionScript 2 et qui n’a pas été reprise en ActionScript 3 est le SendAndLoad. Voilà une classe qui fait ce que faisait le SendAndLoad à savoir envoyer des variables à une page serveur (php, asp, .net …) et attend une valeur en retour.
package { import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; public class SendAndLoad { private var _urlRecupParam:String; private var fctRetour:Function; public function SendAndLoad(pUrl:String, pArrVariables:Object, pFctRetour:Function) { urlRecupParam = pUrl; fctCreerURLVariables(pArrVariables); fctRetour = pFctRetour; } public function get urlRecupParam():String { return _urlRecupParam; } public function set urlRecupParam(value:String):void { _urlRecupParam = value; } private function fctCreerURLVariables(pArrVariables:Object):void { var mesVars:URLVariables = new URLVariables(); for (var key:Object in pArrVariables) { mesVars[key] = pArrVariables[key]; } fctSendAndLoad(urlRecupParam, mesVars); } private function fctSendAndLoad(pUrl:String, pVars:URLVariables):void { var request:URLRequest = new URLRequest(pUrl); var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; request.data = pVars; request.method = URLRequestMethod.POST; loader.addEventListener(Event.COMPLETE, fctSendComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, fctSendAndLoadIOError); loader.load(request); } private function fctSendComplete(pEvt:Event):void { var loader:URLLoader = URLLoader(pEvt.target); loader.dataFormat = URLLoaderDataFormat.VARIABLES ; fctRetour(loader.data); } private function fctSendAndLoadIOError(pEvt:IOErrorEvent):void { trace("IOError sur le send and load : " + pEvt); } } }
Il faut créer une fonction de retour dans la classe principale qui traitera les données envoyer en retour de votre requête de flash.