1/5 (16 avis)
Snippet vu 6 820 fois - Téléchargée 18 fois
//Conditions de départ : //Importer la bibilio JSON ici http://code.google.com/p/as3-rpclib/ // Envoie de données depuis flash vers PHP import flash.net.URLLoaderDataFormat; import flash.net.SharedObject; import com.adobe.serialization.json.JSON; //on créé un shareobjet et on l'enregistre var glo : SharedObject; glo.data.prenom = "Bill"; lo.data.nom = "Boquet"; glo.flush(); // on créé un tableau et on push le shareobject var DATAS_GLB:Array = new Array(); DATAS_GLB.push(glo.data); var url:String = "http://..../write_glob.php" var request:URLRequest = new URLRequest(url); request.method = URLRequestMethod.POST; var requestVars:URLVariables = new URLVariables(); // on sérialise les données au format JSON requestVars.jsons = JSON.encode(DATAS_GLB); request.data = requestVars; // on envoie et c'est tout ! var loader:URLLoader = new URLLoader(); loader.load(request); trace(requestVars.jsons); //-------------------------------------------------------- // récupération de données directement depuis flash var loader:URLLoader = new URLLoader(); loader.load(new URLRequest("http://localhost/..../data.jso")); loader.addEventListener(Event.COMPLETE, onComplete_handler); public function onComplete_handler(event:Event){ var datas :Object = new Object(); datas = JSON.decode(event.target.data); //trace("=> "+event.target.data); // dump tracé //trace("=> "+datas[0].nom); //trace("=> "+datas[0].prenom) //trace("=> "+datas[1].prenom); /:si on envoie par exemple 2 fiches // ici c'est pour lister les nom de variables automatiquement for (var vars:String in datas[0]){ trace(vars); with(glo.data){ vars = datas[0].vars; //On assigne le nom de la valeur à sa valeur //glo.data.prenom = "Bill"; //glo.data.nom = "Boquet"; } }//for glo.flush(); // on écrit les données } //partie PHP hyper simple : (write_glo.php) <?php $jsons = $_REQUEST['jsons']; file_put_contents('../.../data.jso', stripslashes($jsons)); ?>
19 avril 2013 à 14:38
Toutefois, je permet de rappeler que cela à un cout:
1/ nécessité de faire des requetes qui demande un tesmps d'accés imcompressible.
2/ surcharge non négligable de l'activité du sserveur (traitement +enregistrement)
3/ gestion des erreurs
Si ton objectif est juste de stocker des variables, une solutioon pertinente est le DOM Storage.
Car tes variables sont stocker dans la navigateur, le volume disponible est relativement important, l'accessibilité simplifiée, et le code php est pas plus long que celui donné dans ta source.
Alors c'est pas la solution miracle, car comme je l'ai précédemment écrit, seul les navigateur récent , permettent de faire du DOMstorage.
Je ne répond pas a ton messag eprécédent pour etre pénible, mais plutôt pour informer les possible visiteur, des alternatives exitantes.
Cordialement.
P.S:c'est bien malheureux que l'as3 n'ai plus aucun avenir, car c'est pour encore quelques années encore le language compilé le plus performant.
19 avril 2013 à 11:40
Je vais essayer de faire une réponse groupée à Top30 et à AEROLYTE car en relisant ma source, je constate que je n’ai pas été clair du tout et je m’en excuse.
LA PROBLÉMATIQUE :
Stocker le contenu d’un shareObject sur un espace disque disant en vue de le réutiliser dans flash en évitant des opérations d’assignation de variables (car il y en a beaucoup !) Ce qui fait que l’envoi d’un fichier texte comme propose Top30 est exclu car cette solution est très exactement ce que je veux éviter (d’assigner chaque variables à une valeur à l’envoi et au retour).
Sinon, ma source n’a aucune utilité !!
Ma solution réside en 2 choses :
Une opération de mise en forme simple JSON (sérialisation sans passer en revue toutes les variables) et une opération de stockage de l’objet sérialisé brut sur le serveur web grâce à une fonction PHP.
Du coup, il suffit de le charger comme un fichier de faire l’opération de désérialisation de base pour pouvoir l’exploiter comme shareObject.
Concernant la norme WC3, il n’en est pas question non plus puisque le html n’est pas sollicité dans la mesure où l’on reste dans une application flash (php servant d’interface).
Pour conclure, la norme et les bonnes pratiques ne sont pas toujours les bons chemins à suivre pour obtenir la productivité par la performance ;-)
J’espère avoir été plus clair dans mon explication. Mon tors a été de penser que le code était assez explicite sur cette source qui est toujours d'actualité que ce soit pour flash ou pour AIR.
18 avril 2013 à 22:48
tu stringify ton json, tu stockes.
tu rapelles et tu parses.
C'est léger, rapide et surtout c'est a l'épreuve des balles^^.
Cordialement
23 mars 2012 à 10:40
request.data= new URLVariables( "name="+name+"&data"+data.toString() ) ;
23 mars 2012 à 10:38
Ne passes pas par la sérialisation Json...
Gardes directement les variables au format URL dans un fichier texte.
Un truc du genre:
// Ecriture des données de Flash vers PHP ////////////////////////////
var data : URLVariables= new URLVariables();
data.prenom = "Bill";
data.nom = "Boquet";
var name :String= "[URL]/monFichier.txt"
var request :URLRequest= new URLRequest("[URL]/writeData.php");
request.method = URLRequestMethod.POST;
request.data= new URLVariables( "name="+name+"&"+data.toString() ) ;
var loader :URLLoader = new URLLoader();
loader.addEventListener( Event.COMPLETE, onDataWrite );
loader.load(request);
function onDataWrite( $e:Event ):void{
trace("Données enregistrées");
}
// Récupération des données de PHP vers Flash /////////////////////////
var loader :URLLoader = new URLLoader();
loader.load( new URLRequest(name));
loader.addEventListener(Event.COMPLETE, onDataRead );
public function onDataRead( $e:Event ){
var data :URLVariables= new URLVariables($e.target.data) ;
for (var name :String in data ) trace( name, data[name] );
}
// Le PHP "writeData.php", toujours aussi simple...
<?php
$data= $_REQUEST['data'];
$name= $_REQUEST['name'];
file_put_contents( $name, stripslashes($data) );
?>
C'est ecrit à á volée, plus pour le principe que pour le bon fonctionnement. A vérifier !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.