JSON con Flash
JSON es un formato para intercambio de datos que a diferencia de XML es mucho mas ligero pues se transmite la información como un objeto Javascript. En esta oportunidad veremos como utilizar JSON con Flash.
Por defecto Flash no puede interpretar JSON, pero para ello utilizaremos la librería as3corelib el cual contiene una gran variedad de clases para extender la funcionalidades del AS3 entre ellas un parser de JSON. Entonces descargamos los archivos y utilizamos las clase ubicadas en la carpeta com.
Obteniendo los Datos
Los datos en formato JSON para nuestro ejemplo lo obtendremos del servicio Google Ajax Search API del cual hemos comentado en un post anterior, para ello creamos un proxy el cual se encargará de hacer el cambio de dominio para poder acceder a esta información.
- $apiQue = "Google"; // variable a consultar
- $apiKey = "tu_key_google"; // key para acceder al servicio
- $apiUrl = "http://ajax.googleapis.com/ajax/services/search/web";
- if (isset($_GET['query'])){
- $apiQue = urlencode($_GET['query']);
- }
- readfile($apiUrl."?v=1.0&key=".$apiKey."&q=".$apiQue);
n nuestro archivo fla lo primero que hacemos es importar las clases necesarias para el funcionamiento de nuestro script.
- import com.adobe.serialization.json.*;
Lo siguiente es leer el archivo que contiene la respuesta en JSON del servidor, esto lo hacemos con la clase URLLoader, luego agregamos un listener para detectar que se ha completado la carga para luego ejecutar la función decodeJSON.
- var loader:URLLoader = new URLLoader() ;
- var request:URLRequest = new URLRequest() ;
- request.url = "proxy.php?query=unijimpe";
- loader.load(request) ;
- loader.addEventListener(Event.COMPLETE, decodeJSON) ;
Luego definimos al función decodeJSON, la cual se ejecutará inmediatamente después de completarse la carga de los datos, aquí utilizamos el método JSON.decode el cual se encarga de convertir el texto en formato JSON a un objeto que sera fácilmente manipulable con ActionScript.
- function decodeJSON(event:Event):void {
- var loader:URLLoader = URLLoader(event.target);
- var data:Object = JSON.decode(loader.data);
- var results = data.responseData.results;
- for (var i=0; i<results.length; i++) {
- var tmp = results[i];
- trace(i + " --> " + tmp.title + "\n" + tmp.url);
- }
- }
Unimos estos elementos y tenemos un parser de JSON de manera sencilla, como podemos ver lo que se hace es convertir el texto cargado en un objeto que es muy fácil de manipular en Flash.
Completando nuestra aplicación
En el ejemplo anterior, solo hemos trazado los resultados, es momento de agregar un campo de texto para ingresar el criterio de búsqueda y otro campo de texto para mostrar los resultados, con lo cual obtenemos el siguiente código.
- import com.adobe.serialization.json.*;
- var vPath:String = "proxy.php?query=";
- var vRequ:URLRequest = new URLRequest();
- var vLoad:URLLoader = new URLLoader();
- vRequ.url = vPath+"unijimpe";
- vLoad.load(vRequ);
- vLoad.addEventListener(Event.COMPLETE, onLoaded);
- function onLoaded(event:Event){
- var rpta:URLLoader = URLLoader(event.target);
- var json:Object = JSON.decode(rpta.data);
- var data:Array = json.responseData.results;
- var vcon:String = "";
- for (var i:Number=0; i<data.length; i++) {
- var tmp = data[i];
- vcon+= "<a href='"+tmp.url+"'>"+tmp.title+"</a>";
- vcon+= "<br>"+tmp.content+"<br><br>";
- }
- txtcontent.htmlText = vcon;
- scroller.scrollTarget = txtcontent;
- }
- btsearch.addEventListener(MouseEvent.CLICK, onClick);
- btsearch.buttonMode = true;
- function onClick(e:Event) {
- txtcontent.htmlText = "Loading...";
- vRequ.url = vPath+escape(txtQuery.text);
- vLoad.load(vRequ);
- }
Bueno mas adelante posteare un enlace para que puedan descargar los archivos fuente.
- Inicie sesión o regístrese para enviar comentarios
answer
It is not complicated to check the quality of a custom term paper service. You should read the essays examples of that assignment writing service.