Archive for the ‘ Flex ’ Category

Recordar usuarios localmente con Shared Objects en Flex

Los Shared Objects son objetos gestionados por el Flash Player que sirven para almacenar datos en el disco duro de la máquina donde se está ejecutando una película Flash. Aunque no lo son, los Shared Objects pueden entenderse como los cookies del Flash Player, con la diferencia de que son mucho más poderosos que los cookies tradicionales en varios aspectos:

  • Los cookies expiran por defecto; los Shared Objects no expiran.
  • Por lo general, los cookies tienen un límite máximo de 20 por cada sitio web; los Shared Objects no tienen ese límite.
  • Por lo general, los cookies están limitados a un tamaño de 4kb cada uno. Por defecto, los Shared Objects tienen un tamaño de 100kb pero se les puede configurar un tamaño ilimitado.
  • Los cookies pueden ser transmitidos a un servidor vía HTTP. Los Shared Objects no pueden ser transmitidos a un servidor ni pueden ser compartidos entre aplicaciones de distintos dominios (por defecto, aunque se puede permitir), características que suponen una ventaja a nivel de seguridad sobre los cookies.

Otras características interesantes de los Shared Objects y los cookies que pueden ser consideradas como ventajas o desventajas dependiendo del punto de vista, son:

  • Los cookies pueden ser deshabilitados en su totalidad o para un sitio específico desde el navegador. Los Shared Objects escapan a esta configuración. Deben ser gestionados desde la aplicación, haciendo clic derecho sobre la película Flash y seleccionando la opción “Configuración” o “Settings”, o desde el Panel de configuración de Flash Player oficial de Adobe.
  • Los cookies pueden ser eliminados desde las opciones del navegador. Los Shared Objects permanecen cuando se ejecuta esta opción ya que no son cookies.
  • Los cookies, por lo general, almacenan datos de tipo texto. Los Shared Objects almacenan varios tipos de dato binarios, entre ellos: Array, ArrayCollection (de String), Boolean, Date, etc.

Esta tecnología es propia de Flash, está bastante madura a la fecha y su uso es tan simple como difundido. Los Shared Objects, junto con los cookies tradicionales, han sido motivo de pleitos legales en diversos países debido a lo intrusivos que pueden resultar cuando se utilizan de manera agresiva y desmedida en actividades como el rastreo de hábitos de navegación de usuarios con fines publicitarios. De hecho, en Reino Unido se han creado regulaciones que impiden la utilización de cookies y Shared Objects para rastrear hábitos de usuarios sin su consentimiento. Definitivamente, esta tecnología es mas poderosa de lo que aparenta y puede resultar sumamente útil en nuestras aplicaciones RIA. Particularmente, y debido al tamaño ilimitado que puede alcanzar un Shared Object, los considero una buena alternativa al momento de almacenar datos de formularios en aplicaciones sin conexión a Internet (offline) para su posterior envío al servidor (obviamente, cuando la conexión a Internet este disponible).
Sobre esto haré un ejemplo pronto.

Por ahora, les dejo un ejemplo de un buen uso (nada de intrusiones publicitarias, esta vez) de Shared Objects para almacenar los datos de autenticación de un usuario en una aplicación Flex. Lo interesante del ejemplo se encuentra en la clase LoginModel.

Dudas y comentarios son bien recibidos.

Juan Manrique.

Nota: Gracias a Daniel Terraza por darme pistas sobre Shared Objects en Flex.

Recordar usuarios con Shared Objects en Flex
Código

Información oficial sobre Shared Objects
Panel de configuración de Flash Player oficial de Adobe
Curiosidades de los Shared Objects

La imagen de Caracas es de aquí.

Anuncios

¿Cómo obtener ganancias con aplicaciones en Flash?

Ganancias con Flash

Esta es una pregunta que nos hacemos los desarrolladores constantemente. Ahora con el Open Screen Project (desarrollo de una aplicación para diferentes entornos o dispositivos) y las compañías de dispositivos móviles apoyando el desarrollo de aplicaciones, nos enfrentaremos a situaciones desconocidas y difíciles de lograr para muchos en relación a nuestras aplicaciones, tales como distribución, cobro y periodos de prueba.

Recientemente, Adobe publicó en Labs el proyecto Melrose, servicio que soporta la distribución y monetización de aplicaciones creadas para correr en AIR y donde el desarrollador obtiene el 70% de las ganancias, teniendo un precio mínimo de $2.99 para aplicaciones en venta. Por el momento existe una prueba privada del sistema y podemos apuntarnos para ser notificados de su salida.

¿Queremos vender esa gran aplicación y no queremos esperar por Melrose?

Desde la caída de la economía mundial, la industria de los videojuegos ha sido la más beneficiada por la disminución de gastos en otras áreas. Las personas prefieren invertir en esta clase de entretenimiento que, en la mayoría de los casos, es mucho más económico que cualquier otro.  Sumado a esto, las redes sociales y la vida tan agitada que se lleva actualmente crean la necesidad de tener dispositivos móviles que nos permitan seguir conectados con nuestro entorno.  Un juego promedio para un dispositivo móvil cuesta $2 y muchos se soportan mediante publicidad. Esto nos lleva a cobrar por un servicio, crear aplicaciones que se distribuyen gratuitamente, dando la idea de estar completas, colocando procesos o contenido que sólo puede ser disfrutados realizando pagos, usando, por ejemplo la integración de PayPal con aplicaciones hechas en Flex y AIR.

Actualmente, todos los dispositivos con Android 2.2  son capaces de correr Flash/Flex en sus navegadores de internet y AIR como aplicaciones. En los próximos meses esto no será una situación exclusiva de Android; la mayoría de los fabricantes de dispositivos móviles se unirá a esta iniciativa.

Una opción rápida podría ser inscribir los juegos en concursos donde los premios son de $20.000$30.000 a repartir entre los mejores juegos en Android.

¿Redes sociales?

Adobe ofrece Social, unaherramienta que facilita la integración de aplicaciones con las redes sociales mas importantes, aunque esta no es la única manera de realizar dicha integración ya existen librerías que interactúan con el respectivo API de las diferentes redes. Todo depende hacia donde se quiere llevar la aplicación y el tiempo de entrega.

Dos ejemplos de compañías exitosas en la venta de juegos son Zynga (estimado de $270 millones en 2009 en múltiples plataformas) y Tapulous (estimado $1millon mensual por un solo dispositivo).

En conclusión,  la plataforma Flash no sólo está orientada al desarrollo de experiencia de usuario dentro de un navegador o en el escritorio; no son sólo animaciones que pueden ser espectaculares; es una manera de obtener ingresos que, si se aprovechan adecuadamente, pueden representar grandes ganancias.

Autor: Rafael Ochoa.

Consultor de “Rich Internet Applications”, escribo para RIA212.com y AUG Venezuela.

twitter: rafaelochoa

flickr: rafaelochoa

Imagen: gettyimages

Tip Flex: Cerrar ventanas emergentes (PopUp) al hacer clic fuera de ellas

Cuando en una aplicación Flex queremos mostrar mensajes a los usuarios, ya sean de error o informativos, lo más probable es que hagamos uso de la clase PopUpManager, que nos permite mostrar componentes que hemos creado, como ventanas emergentes.
Una de las primeras solicitudes de los clientes y/o jefes, es que los PopUps puedan ser cerrados al hacer click fuera de la ventana, al estilo de los muchos PopUPs JavaScript que circulan por la red. Como muchos sabrán conseguir esto en JavaScript puede ser un verdadero pain in the ass, pero con AS3 no podría ser más fácil; sólo hace falta responder al evento MOUSE_DOWN_OUTSIDE de la clase FlexMouseEvent:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	layout="absolute"
	width="492" height="334">

<mx:Script>
	<![CDATA[

		import mx.core.IFlexDisplayObject;
		import mx.events.FlexMouseEvent;
		import mx.managers.PopUpManager;

		private function showPopUp():void
		{
			//Inicializamos el componente a usar como PopUp
			var popUP:popUpWindow = new popUpWindow();
			//Creamos el PopUp
			PopUpManager.addPopUp(popUP, this, true);
			//Centramos el PopUP
			PopUpManager.centerPopUp(popUP);

			//Respondemos al Evento MOUSE_DOWN_OUTSIDE, para saber cuando
			//el usuario hace click fuera de la ventana y luego utilizamos
			//el método removePopUp para cerrar la ventana emergente
			popUP.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE,
						function(e:FlexMouseEvent):void
						{
							PopUpManager.removePopUp(e.currentTarget as IFlexDisplayObject);
						});
		}
]]>
</mx:Script>

<mx:Button
	label="Mostrar PopUp"
	horizontalCenter="0" verticalCenter="0"
	click="showPopUp()"/>

</mx:Application>

Ver ejemplo

Como ven es bastante sencillo, también se puede usar mouseDownOutside directamente en el componente usado como PopUP:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
	width="302" height="166"
	backgroundColor="#FFFFFF" borderStyle="solid" borderColor="#000000"
	mouseDownOutside="closePopUp()">

<mx:Script>
	<![CDATA[
		import mx.managers.PopUpManager;

		//Este es el componente que usamos como PopUP usamos directamente
		// mouseDownOutside para llamar a closePopUp y cerrar así la
		// ventana emergente
		private function closePopUp():void
		{
			PopUpManager.removePopUp(this);
		}
	]]>
</mx:Script>

<mx:Label
	x="7.5" y="72"
	fontWeight="bold" fontSize="12"
	text="Haz click fuera de la ventana para cerrarla" />

<mx:Label
	x="10" y="10"
	fontWeight="bold"
	text="Ventana Emergente"/>

</mx:Canvas>

Y así no haría falta colocar el controlador del  evento al crear el PopUP:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	layout="absolute"
	width="492" height="334">

<mx:Script>
	<![CDATA[
		import mx.core.IFlexDisplayObject;
		import mx.events.FlexMouseEvent;
		import mx.managers.PopUpManager;

		private function showPopUp():void
		{
			//Inicializamos el componente a usar como PopUp
			var popUP:popUpWindow = new popUpWindow();
			//Creamos el PopUp
			PopUpManager.addPopUp(popUP, this, true);
			//Centramos el PopUP
			PopUpManager.centerPopUp(popUP);
			//NO hace falta responder desde aqui al evento
			//MOUSE_DOWN_OUTSIDE.
		}
]]>
</mx:Script>

<mx:Button
	label="Mostrar PopUp"
	horizontalCenter="0" verticalCenter="0"
	click="showPopUp()"/>
</mx:Application>

Ver ejemplo

Pronto vendrán más tips para ayudar a facilitarnos el trabajo.

Por: Shogoki

Anuncios
A %d blogueros les gusta esto: