Los ValueObjects son indispensables al momento de trabajar con MVC o sin el :) .

Voy a tratar hacer una definición de los ValueObjects sin ser muy técnico. de ahora en adelante al usar VO me estaré refiriendo a los ValueObjects. Los puntos mas importantes de los VO son:

  1. Los VO son contenedores de información representada por una clase individual.
  2. Los VO son serializables, es decir, pueden ser enviados entre un servidor y un cliente mantenido sus propiedades.

Imaginemos que vamos a hacer un listado de mensajes para un guestbook, pero no sabemos quien, que o como nos van a proveer la información, lo único sabemos son los atributos que contendrá cada mensaje, estos son:

  • idUnique
  • author
  • url
  • content

Los mensajes siempre contendrán estas propiedades vengan de donde vengan.

Según el punto 1 esta información es representada por una clase individual entonces como nuestro cliente será hecho el FLEX creamos nuestro clase en AS3 la cual representara nuestros VO en el cliente.

[as]

package com.klr20mg.pureMVC.guestbook.model.vo
{
[RemoteClass(alias="MessagesVO")] [Bindable] public class MessagesVO
{
public var idUnique:String;
public var author:String;
public var url:String;
public var content:String;
public function MessagesVO(author:String=null, url:String=null, content:String=null)
{
this.idUnique = “”
this.author = author;
this.url = url;
this.content = content;
}
}
}

[/as]

Hay 2 formas comunes de “poblar” los VO mediante el constructor, como en este ejemplo o mediante getters y setters, yo prefiero la primera.

Ahora vamos crear un VO a partir de la clase anterior

[as]

package com.klr20mg.pureMVC.guestbook
{
import com.klr20mg.pureMVC.guestbook.model.vo.MessagesVO
public class someClass
{
public function someClass()
{
var miVO:MessagesVO = new MessagesVO(“Tmeister”, “http://tmeister.net”, “Este es un mensaje de prueba”);
trace(miVO)
}
}
}

[/as]

Con esto hemos creado un VO de acuerdo a la primera clase.

Los VO son “compatibles” entre el cliente y el servidor según el punto numero 2, y al usar AMFPHP, WebOrb entre otros podemos enviar arrays de VO’s entre el server y el cliente sin ningún problema, pero entonces debemos de crear nuestros VO’s en el servidor en este caso usando PHP para poder “mapear” esta información.

[php]

class MessagesVO
{
public $idUnique;
public $author;
public $url;
public $content;

public function MessagesVO()
{
}
public function mapObject($data)
{
$this->idUnique = $data["idUnique"];
$this->author = $data["author"];
$this->url = $data["url"];
$this->content = $data["content"];
}
}
?>

[/php]

Como pueden ver es el mismo concepto encapsular la información en una clase.

Con esto, repito, no importa si la información viene de archivos de texto, de un webservice, de una base de datos, siempre podremos almacenar, consultar y modificar la información mediante nuestros VO’s.

Espero que con esto quede claro que son y para que usan los ValueObjects

Saludos :)

Los chicos de Riactive con el propósito de apoyar el proyecto AWI han lanzado oficialmente un concurso patrocinado por Adobe EU y Latam, tal y como lo comenta Edgar.

Dicho concurso consta de crear un cliente para AWI [AMFPHP-WordPress Integration], ya sea para reproducir una interfaz en Flex/Flash para wordPress como blog o como un CMS para sitios web.

Como comenta Edgar el primer lugar ganara una licencia de Flex con Charting y el segundo lugar ganara una licencia de Flash 8.

Esto es para ponerse las pilas por su parte lectores para crear el cliente y para mi para trabajar a marchas forzadas para terminar al 100% AWI.

Como saben, AWI tiene un par de semanas vivo y aun esta en un estado alpha, pero cuenta con 16 métodos funcionales de lectura de información con los cuales se puede trabajar un cliente sin problema.

Junto con los desarrollos que ustedes vayan creando por supuesto que comenzaran a existir peticiones, comentarios etc que al final del día dará como resultado un “producto” espero yo robusto y estable creado a partir de las opiniones de cada uno de ustedes.

Por mi parte daré, de ahora en adelante, prioridad uno a este proyecto tratando de satisfacer todas aquellas peticiones que surjan.

Por ahora pueden usar mi servidor como conejillo de indias ya que aquí esta montado AMFPHP 1.9 y la ultima versión de AWI.

La url del Gateway es :

http://tmeister.net/amfphp/gateway.php

el browser de los servicios lo encuentran en:

http://tmeister.net/amfphp/browser/

Una vez que los métodos de escritura estén listo montare un wordpress exclusivo para el proyecto en el cual podrán hacer o deshacer lo que quieran ;)

Para peticiones, sugerencias, reclamos, etc. Por favor háganlo directamente en la lista de correo del proyecto para subscribirse a la lista basta con enviar un email vació a la dirección

awi-dev-subscribe@googlegroups.com

Ahora por ultimo y no por ello menos importante no me queda mas que agradecer a todos los miembros del equipo de Riactive por el apoyo, principalmente a Edgar Parada, estoy realmente agradecido por el apoyo en este proyecto.

No queda mas que… a ponchar código. :p

No sean tímidos y envíen sus clientes

Saludos!! 8)

Bueno gente, Esto va en serio, he creado un sitio especial para el proyecto en el cual estarán las ultimas noticias sobre el proyecto, los links relacionados, Mailing-list, descargas, SVN, Blog etc.

De verdad les agradecería sus comentarios sobre el proyecto, que al fin del día es un proyecto para la comunidad o sea todos nosotros :P

La url del sitio es : http://tmeister.net/awi/

Nos estamos viendo.

English translation, at the bottom

Hace un par de días comencé a trabajar sobre un nuevo proyecto. Su nombre oficial es AWI (Amfphp WordPress Integration).

El propósito de AWI es hacer servicios para Amfphp, los cuales servirán de “gateway” entre Flex/Flash y WordPress, para así poder hacer GUI’s sobre estas 2 plataformas de desarrollo.

Como comente al inicio, este proyecto lo comencé apenas hace un par de días. Y espero dedicarle un par de horas al día, por lo menos ( O lo que el cuerpo aguante :) ), ademas de esto decidí hacer de este un proyecto abierto, se que es un proyecto pequeño, pero que mas da, veamos cual puede ser el resultado.

Por el momento el proyecto consta solo de 4 servicios y estan en estado alpha, por el momento, solo leen algunas propiedades de WordPress.

Ademas de contar con los métodos para tomar la información normal del blog, Post, Comentarios, Categorías, BlogRoll, etc. Tal vez también se integre todo lo referente a la administración del mismo aun no lo se.

Si alguien esta interesado en participar pueden encontrar el proyecto hospedado en GoogleCode

http://code.google.com/p/awi/

Los archivos los pueden descargar en

http://code.google.com/p/awi/downloads/list

Para ver los métodos hasta el momento puede entrar a

http://tmeister.net/amfphp/browser/

bajo el apartado WordPress.

Si alguien tiene comentarios, ideas, etc son bienvenidas.

– English –

Two days ago i began working on a new project officially called AWI (Amfphp WordPress Integration).

The objective to reach is to make services for working on Amfphp, which will be like a “gateway” between Flex/Flash and WordPress, and building GUIs on those two platforms.

like i said at the beginning, this project started two days ago, and i will spend at least a couple of hours a day, as well as beginning this project, it will be open source, i know it is a little project but doesn’t matter, we’ll see the impact and the results.

Currently it has just 4 services in alpha status, they access a few properties from WordPress.

As well as to have the methods for taking the normal data from the blog, posts, comments, categories, blogroll, etc, maybe i will add features about the management but i still dont know.

If anybody is interested and want to collaborate, the project is hosted in GoogleCode:

http://code.google.com/p/awi/

You can download the files from:

http://code.google.com/p/awi/downloads/list

The methods written currently could be reached at:

http://tmeister.net/amfphp/browser/

under the WordPress section

Any help, ideas, comments would be appreciated.

cheers 8)

Hace poco mas de un mes se anuncio el lanzamiento de la versión 1.9 alpha de amfphp, esta versión por fin soportaba AMF3 y con ello interactuar totalmente con Flex2. Y el pasado viernes se lanzo la versión beta 2, Así que es hora de que nos vayamos enterando de como funciona esta nueva versión =)

1.Descargar e Instalar Amfphp 1.9 beta 2.

Descarga el archivo zip de amfphp 1.9, descomprimelo y sube el folder amfphp a algún lugar de tu servidor, el mejor sitio seria el directorio principal de tu sitio. Para comprobar que todo esta correcto haremos la vieja pero siempre efectiva comprobación. En tu navegador escribe la dirección que apunte hacia el archivo gateway.php

Si el folder de amfphp se encuentra en el folder raíz de tu sitio entonces la dirección seria:

http://www.tusitio.com/amfphp/gateway.php

Si todo sale bien debes de ver un mensaje como este.

“amfphp and this gateway are installed correctly. You may now connect to this gateway from Flash.

Note: If you’re reading an old tutorial, it will tell you that you should see a download window instead of this message. This confused people so this is the new behaviour starting from amfphp 1.2.

View the amfphp documentation

Load the service browser”

2. Crear nuestro primer servicio.

HelloWorld.php

[php] class HelloWorld
{
public function SayHi()
{
return "Hi there. =)";
}
}
?>
[/php]

Si ya habías trabajado con una versión vieja de amfphp te darás cuenta que $this->methodTable se ha eliminado de la estructura de la clase.

$this->methodTable era utilizado para asignar las propiedades de las funciones, sobre todo la descripción, y la forma de acceso, esto ultimo para saber si se podría acceder a la función de forma remota o solo local.

En esta nueva versión como dije antes $this->methodTable dejo de usarse. Ahora esta nueva versión de amfphp asume que todas las funciones pueden accederse remotamente a menos que el nombre de la función comience con guion-bajo “_” o la función sea declarada como privada, esta ultima opción solo esta disponible en php5.

Un ejemplo HelloWorld2.php
[php] class HelloWorld
{
public function SayHi()
{
return "Hi there. =)";
}
private function connectDB()
{
//PHP5
//Solo se puede ejecutar desde la misma clase
}
function _localMethod()
{
//PHP4
//Esta funcion tambien sera accesible desde la misma clase unicamente
}
}
?>
[/php]

3. Configurar Flex2 para trabajar con amfphp

Debemos crear un proyecto básico en Flex.

project1

project2

Ahora necesitamos crear un archivo de configuración para que flex sepa donde buscar nuestros servicios de amfphp.

Para ello creamos el archivo services-config.xml con la siguiente estructura

[xml]






*









[/xml]

La única linea que nos interesa y que debemos modificar es la siguiente:

[xml]
[/xml]

Modificando la ruta hacia donde esta nuestro archivo gateway y guardandolo en el folder raíz de nuestro proyecto.

Una vez que tenemos nuestro archivo, dar click derecho sobre el nombre del mismo e ir a propiedades. Se abrirá una ventana de propiedades, obviamente, seleccionamos del menú izquierdo la pestaña “Flex Compiler” y en la linea de “Argumentos adicionales de compilación” -s services “services-config.xml” y damos click en “Ok”

project3

Ahora ya estamos listos para trabajar con amfphp 1.9 y Flex.

4. Probando la conexión

Lo primero es subir nuestro servicio “HelloWorld.php” el cual creamos en el paso 2.

Este servicio debe de estar dentro del folder amfphp/services, dentro, puedes crear folders anidados sin ningún problema en este caso lo colocare en la carpeta Tutorials/HelloWorld.

Creamos una pequeña interfaz la cual constara de un un par de LinkButtuns, un TextArea contenidos dentro de un panel cuyos botones ejecutaran los métodos remotos de amfphp.

Algo así

[xml]



import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
public function onMethodResult(event:ResultEvent):void
{
out_txt.text = "Result "+event.result
out_txt.text += "nDataType "+ typeof(event.result)
}
public function onServiceFault(event:FaultEvent):void
{
out_txt.text = "Fault "+event.fault
}
]]>


id="helloService"
source="Tutorials.HelloWorld.HelloWorld"
destination="amfphp"
fault="{onServiceFault(event)}"
showBusyCursor="true"
>

name="SayHi"
result="{onMethodResult(event)}"
>









[/xml]

vamos a ver parte por parte.

[xml] id="helloService"
source="Tutorials.HelloWorld.HelloWorld"
destination="amfphp"
fault="{onServiceFault(event)}"
showBusyCursor="true"
>

name="SayHi"
result="{onMethodResult(event)}"
>


[/xml]

En este tag como se puede ver creamos nuestro RemoteObject los parámetros son:

id : El nombre con el cual haremos referencia
source: el path a partir del folder amfphp/services, donde se encuentra nuestro servicio en el servidor,
destination: el identificador seteado en el tag <destination> del archivo services-config.xml
fault: El método que sera ejecutado al momento de que ocurra un error.
showBusyCursor: Mientras dure la ejecución del método remoto flex mostrara el cursor de ocupado

Dentro del tag RemoteObject debemos agregar los métodos a los cuales vallamos a acceder desde Flex y definir la función que se ejecutara cuando el método se haya ejecutado con éxito.

Esto lo hacemos definiendo el tag <mx:method>

[xml] name="SayHi"
result="{onMethodResult(event)}"
>

[/xml]

los parámetros son:

name: El nombre del método que se ejecutara, que es el mismo que tenemos en nuestro servicio.
result : asignamos la función que se ejecutara cuando el método remoto se ejecute.

Por ultimo, debemos ejecutar dichos métodos desde nuestra interfaz, en este ejemplo se ejecutan mediante un LinkButton

[xml]
[/xml]

Al momento de dar click enviamos la petición de ejecución del método SayHi que esta definido dentro del RemoteObject helloService, simple cierto? ;)

Este es el resultado final.

[FLASH]http://tmeister.net/flex/tutorials/helloworldamfphp.swf,250,200[/FLASH]

Aqui estan los archivos completos del proyecto. helloworld-amfphp19.zip

Con esto podemos comenzar a trabajar y a aprovechar todas la ventajas que amfphp nos ofrece.

Cheers. 8)

Últimamente he estado probando Flex. Estoy realizando una vista en Flex de este blog que pronto podrán ver en linea entre otras cosas..

Bien, El tema de hoy va sobre la etiqueta esta etiqueta al momento de debuguear tu aplicación es de gran ayuda, por ejemplo, digamos que queremos consumir un webServices remoto, algo simple tomar la “Cita del día”.

Cuando agregamos esta etiqueta a nuestro mxml regresa una secuencia detallada de los eventos que se están ejecutando en nuestra aplicación. Como es un tag para debuguear en nuestra aplicación final no se vera ningún cambio.

El ejemplo es sencillo

[as]


import mx.events.*
import flash.xml.XMLDocument
public function init():void
{
miConexion.GetQuote.send()
}
public function onResultOK(event:Event):void
{
var data:XMLDocument = new XMLDocument();
data.parseXML(miConexion.GetQuote.lastResult);
var out:String = data.firstChild.firstChild.firstChild.firstChild.nodeValue
outPut.text = out

}
public function onResultFault(fault:Event):void
{
trace(fault)
}
]]>







[/as]

así es como se ve nuestra ventana de debugeo si dicha etiqueta

[as] [SWF] C:Documents and SettingsTmeist3rDesktoptestbintest-debug.swf – 730,596 bytes after decompression
[/as]

Ahora, así es como se ve nuestra ventana de debugueo cuando utilizamos TraceTarget

[as] [SWF] C:Documents and SettingsTmeist3rDesktoptestbintest-debug.swf – 717,747 bytes after decompression
Registering schema namespace: http://www.w3.org/1999/XMLSchema
Registering schema namespace: http://www.w3.org/2000/10/XMLSchema
Registering schema namespace: http://www.w3.org/2001/XMLSchema
Registering schema namespace: http://schemas.xmlsoap.org/soap/encoding/
Registering schema namespace: http://xml.apache.org/xml-soap
Registering schema namespace: http://rpc.xml.coldfusion
’0E6C71D7-0670-186D-74DB-0B47A9E33F2A’ producer set destination to ‘DefaultHTTP’.
’9828CAB5-C669-81AC-3299-0B47AA9F2817′ producer set destination to ‘DefaultHTTP’.
‘direct_http_channel’ channel endpoint set to http:
Creating WSDL object for http://www.swanandmokashi.com/HomePage/WebServices/QuoteOfTheDay.asmx?WSDL
’127766B4-8379-1647-CADD-0B47AA9FB309′ producer set destination to ‘DefaultHTTP’.
Loading document http://www.swanandmokashi.com/HomePage/WebServices/QuoteOfTheDay.asmx?WSDL for destination ‘DefaultHTTP’
’0E6C71D7-0670-186D-74DB-0B47A9E33F2A’ producer sending message ’5604ADC7-4155-F995-8E77-0B47AA9F7C90′
‘direct_http_channel’ channel sending message:
(mx.messaging.messages::HTTPRequestMessage)#0
body = (Object)#1
clientId = (null)
contentType = “application/x-www-form-urlencoded”
destination = “DefaultHTTP”
headers = (Object)#2
httpHeaders = (Object)#3
messageId = “5604ADC7-4155-F995-8E77-0B47AA9F7C90″
method = “GET”
recordHeaders = false
timestamp = 0
timeToLive = 0
url = “http://www.swanandmokashi.com/HomePage/WebServices/QuoteOfTheDay.asmx?WSDL”
’0E6C71D7-0670-186D-74DB-0B47A9E33F2A’ producer connected.
Queueing SOAP operation GetQuote
’0E6C71D7-0670-186D-74DB-0B47A9E33F2A’ producer acknowledge of ’5604ADC7-4155-F995-8E77-0B47AA9F7C90′.
Processing imports for location http://www.swanandmokashi.com/HomePage/WebServices/QuoteOfTheDay.asmx?WSDL
Parsing schemas
Registering schema namespace: http://swanandmokashi.com
Done parsing schemas: 3 ms
Done processing imports: 581 ms
Parsing services
Parsing individual services
Parsing service: QuoteofTheDay
Parsing binding: http://swanandmokashi.com::QuoteofTheDaySoap
Parsing portType: http://swanandmokashi.com::QuoteofTheDaySoap
Parsed portType: 1 ms
Parsed binding: 6 ms
Parsed service: 11 ms
Done parsing services: 12 ms
WSDL parse took 594 ms
WSDL loaded
Made SOAP Operation for GetQuote
Set active port in service stub: QuoteofTheDay:QuoteofTheDaySoap
Invoking previously queued calls GetQuote
Invoking SOAP operation GetQuote
Initializing SOAP operation GetQuote
Parsing message: http://swanandmokashi.com::GetQuoteSoapIn
Message name is GetQuoteSoapIn
Parsed message: 5 ms
Parsing message: http://swanandmokashi.com::GetQuoteSoapOut
Message name is GetQuoteSoapOut
Parsed message: 5 ms
Asynchronously invoking SOAP Operation: GetQuote
Encoding SOAP request envelope
Encoding SOAP request body
Encoded SOAP Operation request:

’0E6C71D7-0670-186D-74DB-0B47A9E33F2A’ producer sending message ‘E5E1E227-8114-3417-14DB-0B47AD103D57′
‘direct_http_channel’ channel sending message:
(mx.messaging.messages::SOAPMessage)#0
body = “

clientId = “DirectHTTPChannel0″
contentType = “text/xml; charset=utf-8″
destination = “DefaultHTTP”
headers = (Object)#1
httpHeaders = (Object)#2
SOAPAction = “”http://swanandmokashi.com/GetQuote”"
messageId = “E5E1E227-8114-3417-14DB-0B47AD103D57″
method = “POST”
recordHeaders = false
timestamp = 0
timeToLive = 0
url = “http://www.swanandmokashi.com/HomePage/WebServices/QuoteOfTheDay.asmx”
’0E6C71D7-0670-186D-74DB-0B47A9E33F2A’ producer acknowledge of ‘E5E1E227-8114-3417-14DB-0B47AD103D57′.
Decoding SOAP response
Encoded SOAP response: All I Really Need To Know I Learned In KindergartenRobert Fulghum
Decoding SOAP response envelope
Decoded SOAP response into result [0 millis] [/as]

Sin duda esta es una etiqueta que nos puede ahorrar muchos dolores de cabeza al momento de Debugear.

[FLASH]http://tmeister.net/flex/tracetarget/trace.swf,350,100[/FLASH]

Saludos!!

A pocas horas de publicar el post Comunidades Flex en español, en donde comentaba que no existía ninguna comunidad en Español. Amanezco con la noticia de que Carlos Rovira junto con Xavi Beumala han lanzado un portal-comunidad sobre Flex y si, en español llamado MadeInFlex..

Bueno, era de esperarse era solo cuestión de tiempo para que apareciera algo, y la verdad para mi es mas que suficiente jeje. Estos 2 personajes si que saben de lo que hablan.

Acerca de MadeInFlex

“Made In Flex es un sitio web en español que pretende unificar aquellas necesidades creadas entorno a la plataforma Flex de Adobe. En definitiva, un punto de encuentro para desarrolladores, empresas y todo aquel interesado en esta nueva generación de RIAs(Rich Internet Applications).

Los recursos planteados son muy diversos: Noticias, Grupo de Usuarios de Adobe, Lista de Correo, Casos de Uso o Artículos por nombrar solo algunos. Es de esperar que se añadan más conforme desarrollemos la idea entre todos.”

Bueno, por lo pronto ya estoy inscrito en la lista, ya verán mis dudas por ahí. :)

No me queda mas que desearles toda la suerte del mundo y espero poder colaborar con ustedes de alguna forma (Por lo menos haciendo preguntas :P )

Enhorabuena. 8)

A partir del lanzamiento oficial de Adobe Flex 2 me he puesto a probarlo realmente a conciencia, las “pruebas” son claramente desde una perspectiva de un desarrollador en Flash.

Bueno los resultados de estas pruebas los publicare en un Post posterior.

El tema del post es “Comunidades de Flex en español”. Cuando estaba investigando sobre Flex me di cuenta que no existe ningún sitio en español dedicado a Flex, hay unos cuantos blogs dignos de leer aunque los autores son de habla hispana los contenidos son en Ingles aunque de muy buena calidad.

ASFusion
OscarTrelles
Carlos Rovira

Me encontré con un foro sobre Flex en after-hours pero parece que se postea una pregunta cada mes jeje.. tal como en mi blog. :)

Bueno el punto es ¿no existen comunidades en español de Flex? ¿Valdrá la pena crear un comunidad de Flex en español?

Por mi parte me gustaría crear algo, pero no se realmente si exista el material humano para poder crear una comunidad como tal,

Ahora el por que me interesa? Simplemente para poder ir aprendiendo juntos, se puede decir que estoy en un nivel medio-bajo, si no es que bajo en Flex y tener un lugar donde preguntar, donde compartir sobre temas de interés mutuo etc seria interesante.

Que les parece? Creamos algo?

Hace poco se lanzo el Framework de Flex 2 (Beta 1).

En lo personal siempre he tenido mis dudas acerca de Flex, Al necesitar un servidor especial para ejecutar los archivos mxml, el precio Etc. Etc.

Hasta ahora que tengo un poco de tiempo decidí bajar el nuevo framework y probar que tal. Recuerden que es mi primer contacto con Flex aun no puedo decir que soy un entendido del tema ni mucho menos En fin

Lo primero que se me vino a la mente fue el ya tan común lector de RSS jeje :P que se le va a hacer, repito, aun no exploro todas las posibilidades de Flex y ActionScript 3.

Para mi sorpresa fue mucho mas fácil de lo que imagine. Hacer un parser de RSS en Flash común y corriente es un dolor de muelas por no decir otra cosa. Sin embargo en Flex me encontré con la clase HTTPService la cual hace la petición al recurso de RSS y lo entrega en un fabuloso objeto, lo único que queda hacer es saber la estructura del XML y listo las referencias son tan simples como

rss.channel.item[i].title

eso me agrado bastante, el trabajo disminuyo en lugar de aumentar. Nice.

Me doy cuenta que es casi exactamente lo mismo que una aplicación común de Flash el único cambio se produce al momento de crear la interfaz gráfica (GUI), esta se crea mediante tags de XML fáciles y entendibles desde el primer ejemplo.

Esto dio como resultado que mi interés sobre Flex creciera voy a tener que meterme mas al tema.

El único inconveniente que veo es el tamaño resultante del SWF 220 Kb.. pero al saber que los usuarios que utilizan banda ancha esta creciendo, este inconveniente no creo que se convierta en un problema.

Mi primer intento en Flex resulto en esto. Repito es algo muyy sencillo.

Actualización
El url correcto es http://tmeister.net/flex/kill.swf y se necesita el Flash Player 8.5 para poder verlo.

Coloquen el URL de un RSS y es todo..

ej. http://tmeister.net/?feed=rss2

Me olvidaba para los curiosos que les gusta ver código este es el código completo del mxml

[as]


import mx.rpc.http.HTTPService;
import mx.rpc.event.ResultEvent
import mx.controls.List;
import mx.controls.ListEvents;
private var rss:Object;
private var theUrl:String
public function changeState(target:String, url:String):void{
if(url.length){
theUrl = url;
currentState = target;
useHttpService();
}
}
public function useHttpService():void {
var service:HTTPService = new HTTPService();
service.url = theUrl
service.addEventListener("result", httpResult);
service.send();
}
public function httpResult(obj:Object):void{
var source:Array = [];
rss = obj.result.rss
itemList.addEventListener("change", loadInfo);
for(var i:String in rss.channel.item){
var tmp:Object = {}
tmp.label = rss.channel.item[i].title
tmp.link = rss.channel.item[i].link
if(rss.channel.item[i].encoded != undefined){
tmp.data = rss.channel.item[i].encoded;
}else{
tmp.data = rss.channel.item[i].description;
}

source.push(tmp)
}
itemList.dataProvider = source
}
public function loadInfo(obj:Object){
panel1.title = "Simple RSS Reader :::: "+obj.target.selectedItem.label;
info.htmlText = obj.target.selectedItem.data;
info.htmlText += "

Ir al Sitio“;

}
]]>





































[/as] Saludos

Follow me through my day

Send requests or questions about my products, find out on what I'm working and stay tune with my updates or just say hello ;)

Array

@Tmeister

active