et sendAndLoad en AS3 ?
Par DickRivers, mardi 6 décembre 2005 à 17:35 :: Flash :: #42 :: rss
Bien sûr vous demandez maintenant comment faire un bon vieux sendAndLoad() en AS3 puisque la classe LoadVars() n'existe plus, dans le précédent article je vous montrai comment utiliser les nouvelles fonctions navigateToURL() et sendToURL().
Si vous utilisez ces fonctions vous n'avez aucun retour serveur, vous envoyez les données mais ne recevez aucune confirmation. Et bien sachez qu'il faudra utiliser desormais la classe URLLoader(), que ce soit pour charger du texte, du XML, ou bien des données binaires. Je ne détaille pas tout les évenements de la classe URLLoader comme ioError, httpStatus, etc... Mais les 2 principaux, progress et complete.
Si vous utilisez ces fonctions vous n'avez aucun retour serveur, vous envoyez les données mais ne recevez aucune confirmation. Et bien sachez qu'il faudra utiliser desormais la classe URLLoader(), que ce soit pour charger du texte, du XML, ou bien des données binaires. Je ne détaille pas tout les évenements de la classe URLLoader comme ioError, httpStatus, etc... Mais les 2 principaux, progress et complete.
Nous envoyons des données, deux variables de type Number l'addition est faire coté PHP et nous récupérons l'addition côté client :
package {
import flash.display.*;
import flash.util.*;
import flash.net.*;
import flash.events.*;
public class sendAndLoadasURLLoader extends Sprite {
private var myLoader:URLLoader;
public function sendAndLoadasURLLoader() {
// objet URLRequest pour un envoi HTTP
// il est utilisé par les classes URLLoader, URLStream, et Loader
var myRequest:URLRequest = new URLRequest("http://localhost/as3sendAndLoad/test.php");
// création d'un objet URLVariables pour envoyer les données
var variables:URLVariables = new URLVariables();
// création des variables dans l'objet variables URlVariables
// même système que l'objet loadVars
variables.a = 125;
variables.b = 587;
// passage des données en POST
// propriété postData de URLRequest
myRequest.postData = variables;
// creation de l'objet URLLoader
myLoader = new URLLoader();
// écoute de l'évenement COMPLETE
// diffusé une fois les données retournées par le serveur (équivalent un onLoad sur LoadVars);
myLoader.addEventListener(EventType.COMPLETE, onDataReceived);
// écoute de l'évenement PROGRESS
// diffusé lors du download des données
myLoader.addEventListener(ProgressEventType.PROGRESS, onProgress);
// envoi des données et attente du retour par l'évenement COMPLETE
// load est l'équivalent ici du sendAndLoad() sur LoadVars
myLoader.load ( myRequest );
}
private function onDataReceived ( event:Event ):Void {
// les variables retournées sont url encodées
// on reinstancie donc un objet URlVariables avec la propriété data de URLLoader
var myVariables:URLVariables = new URLVariables ( myLoader.data );
trace (myVariables.total);
}
private function onProgress(event:ProgressEvent):Void {
var ratio:Number = Math.floor ( event.bytesLoaded / event.bytesTotal * 100);
var total:Number = isNaN ( ratio ) ? 0 : ratio;
trace("onProgress : " + total );
}
}
}
Commentaires
1. Le vendredi 21 juillet 2006 à 14:52, par dehats
Ajouter un commentaire