Adobe Latin Flash Tour
Lee Brimelow y Enrique Duvos (confirmados hasta ahora) estarán llevando a cabo el Adobe Latin Flash Tour. No pierdan la oportunidad de asistir; seguramente expongan las últimas novedades de la plataforma y podamos tener (aunque sea) una pequeña parte de lo que es Adobe MAX en latinoamérica.
Listado de ciudades:
Santiago, Chile Nov 7th – http://www.mmug.cl/index2.php
Buenos Aires, Argentina Nov 9th – http://adobetourargentina.eventbrite.com
Lima, Peru Nov 11th – http://www.garageflash.com/el-flash-latin-tour-llega-al-peru
Bogotá, Colombia Nov 13th – http://latinflashtour.eventbrite.com
San Jose, Costa Rica Nov 16th – http://www.techcampcostarica.com
Mexico City, Mexico – Wed Nov 18th – http://latinflashtourmx.eventbrite.com
Desde los mismos pueden proceder al registro; el evento va a ser gratuito.
sitio del evento:
- Sitio de Adobe Latin Flash Tour
AS3: Event Listeners y WeakReference (referencia débil)
Si bien en el capítulo dos del libro Flash Extremo desarrollé este tema con mayor profundidad, considero que vale la pena hacer una mención al mismo en el blog para comprender su funcionamiento y aportar un modo de adoptar una buena práctica a la comunidad de desarrolladores:
La sintaxis por medio de la cual agregamos eventos, es la siguiente:
Pero existen tres parámetros más, los cuales son de carácter opcional:
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown, false, 0, false)
Para que el garbage collector “elimine” la referencia a aquellos eventos que ya no estamos utilizando, debemos asignar la referencia débil al declararlos. De aquí, el por qué del true del último parámetro:
Contenidos libro Proyectos Web: Flash + PHP + XML + MySQL
Mariano Makedonsky
ISBN: 987-1347-15-4
Páginas: 384
Peso: 454 grs.
1 | INTRODUCCIÓN
Conceptos básicos referentes a cada lenguaje, a fin de encarar sin problemas el desarrollo de los proyectos de este libro.
2 | WEBMAIL Y REGISTRO DE USUARIOS
En este capítulo, veremos de qué modo se realiza el registro de un usuario, cómo verificamos sus datos y, por último, haremos un webmail utilizando Flash y PHP.
3 | ADMINISTRADOR DE NOTICIAS
A lo largo de este proyecto, aprenderemos a desarrollar un administrador de noticias desde su base de datos hasta su visualización, y entenderemos por qué es tan flexible trabajar de este modo.
4 | GALERÍA DE IMÁGENES
Explicaremos paso a paso cómo crear una galería de imágenes de forma dinámica. También mencionaremos algunas particularidades para obtener mejores resultados, tanto en la producción como en la visualización de los mapas de bits.
5 | REPRODUCTOR MP3
En este capítulo, vamos a crear un reproductor de MP3, conociendo las particularidades y las ventajas que nos brinda Flash al trabajar con sonidos externos.
6 | PIZARRA DE DIBUJO
Trabajaremos con matrices, tanto del lado del cliente como del lado del servidor, a fin de crear una pizarra de dibujo que nos permita guardarlos en una base de datos y abrirlos otra vez.
7 | CALENDARIO DINÁMICO
Éste es un claro ejemplo para poner en práctica los conocimientos adquiridos hasta el momento, y nos servirá para avanzar en otros aspectos fundamentales, como el manejo de controles
8 | FORO DE DISCUSIÓN
Explicaremos cómo desarrollar un foro íntegramente en Flash, utilizando PHP como lenguaje del lado del servidor y XML como el nexo entre ambos.
9 | SISTEMA DE COMPRAS
Aplicaremos todos los conocimientos adquiridos para crear un sistema de compras online.
Archivos del libro Proyectos Web: Flash + PHP + XML + MySQL
todos los archivos de ejemplo aqui!
1 | INTRODUCCIÓN
>> http://as3hispano.com/files/proyectosweb/capitulo1.rar
2 | WEBMAIL Y REGISTRO DE USUARIOS
>> http://as3hispano.com/files/proyectosweb/capitulo2.rar
3 | ADMINISTRADOR DE NOTICIAS
>> http://as3hispano.com/files/proyectosweb/capitulo3.rar
4 | GALERÍA DE IMÁGENES
>> http://as3hispano.com/files/proyectosweb/capitulo4.rar
5 | REPRODUCTOR MP3
>> http://as3hispano.com/files/proyectosweb/capitulo5.rar
6 | PIZARRA DE DIBUJO
>> http://as3hispano.com/files/proyectosweb/capitulo6.rar
7 | CALENDARIO DINÁMICO
>> http://as3hispano.com/files/proyectosweb/capitulo7.rar
8 | FORO DE DISCUSIÓN
>> http://as3hispano.com/files/proyectosweb/capitulo8.rar
9 | SISTEMA DE COMPRAS
>> http://as3hispano.com/files/proyectosweb/capitulo9.rar
AS3 SharedObjects
SharedObjects (también conocidos como SO u Objetos Compartidos en español) son las Cookies de Flash. Las mismas nos permiten almacenar información limitada de datos en el equipo de un usuario, o en un servidor. Veremos que si bien pocas veces hacemos uso de ellas, son de una enorme utilidad y repercuten de manera positiva en la experiencia de usuario (por más de que a nivel conciente no lo perciban).
Flash utilisa los SO de manera local y de manera remota. En este post abarcaremos la manera local de trabajar con ellas.
Esta posibilidad de almacenar info en el sistema del usuario, pone a nuestra disposición una enorme gama de posibles soluciones que si bien no siempre son determinantes para el funcionamiento de un desarrollo, indudablemente mejoran la experiencia:
¿Alguna vez notaste que el reproductor de videos de Youtube conserva siempre el último volumen que seteaste, por más de que cierres el sitio y vuelvas?
Al igual que Youtube, muchos players hacen esto, y la manera de lograrlo es justamente por medio del uso de SharedObjects. La pregunta anterior me llena de curiosidad. La hago con bastante frecuencia, y salvo pocos desarrolladores, la mayoría no sabe que la web de videos hace eso con el volumen. Quizas a muchos les parezca un dato menor, o incluso imperceptible; a nivel consciente no estamos pendiente del volumen, pero brindar estas pequeñas soluciones, indudablemente mejoran la experiencia de navegación y la interacción con las aplicaciones; nos facilitan su manejo y por sobre todas las cosas, muchas veces logran optimizar nuestros tiempos y focalizarlo en lo que realmente nos interesa.
Pero el alcance de los SO es mucho más potente y les podemos dar los más diversos usos; cuando comiencen a pensar en posibles soluciones, seguramente le vengan a la cabeza muchísimas ideas y posibilidades. Sí, prácticamente todas ellas, son válidas.
Veamos como usarlas en Flash:
En primer lugar, debemos declarar una instancia de la clase SharedObject:
mySharedObject = SharedObject.getLocal(”as3hispano”);
Por medio del método getLocal() indicamos el nombre que llevará nuestro SO y el cual utilizaremos tanto para leer como para guardar valores.
Cómo almacenar valores:
Una vez que contamos con nuestra instancia, a la propiedad data de la misma, podemos asignarle los atributos que queremos almacenar y luego leer. Suponiendo que queramos almacenar un valor numerico, lo hacemos del siguiente modo:
mySharedObject.data.volumeSO = 0.7;
La clase SharedObject cuenta con el método flush, por medio del cual podemos dar la orden de que se grabe el valor inediatamente. En caso de no utilizar el método flush, el SO se guardará cuando se finalice la sesión (cuando se cierre el SWF o cuando se utilicen los métodos close() o clear() de la clase SharedObject):
var flushIt:String = mySharedObject.flush();
Cómo leer valores:
También accedemos a los valores almacenados por medio de la propiedad data. Lógicamente, debemos haber declarado una instancia de la clase SharedObject:
var value:Number = mySharedObject.data.volumeSO;
trace(value);
En caso de que no exista el atributo que estamos tratando de leer del equipo del usuario, nos devolverá null.
La clase SharedObject cuenta con varios métodos, propiedades y eventos que ayudan a trabajar con ellos gran flexibilidad. Su uso es realmente sencillo e intuitivo, su implementación es cuestión de pocos minutos y el aporte que hacen a la experiencia de navegación es realmente significativo.
Por otro lado, al implementar cookies con PHP, tenemos hasta 4Kb para almacenar información. Los Objetos Compartidos de Flash nos proveen de 100 kb por defecto (pudiéndose alternar entre otros valores; 1mb, 10mb, ilimitado, 10 kb y ninguno).
Podemos configurar estos parámetros desde http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html
El uso de los SO puede ser de lo más variado. Aquí les dejo un pequeño ejemplo implementando el slider genérico que se utilizó en un post anterior.
AS3 Slider
¡He aquí el primer post!
Hace algún tiempo tengo hecho este pequeño slider genérico. Me parece un buen ejemplo como primer post, no precisamente por su funcionalidad, sino por su desarrollo. Si lo que buscan es un tutorial de como desarrollar un slider, definitivamente este no es el caso. Google nos puede arrojar infinidad de Sliders hechos en Flash, con easing, sin easing, para texto, para MovieClip, etc, etc. Incluso, descargando el archivo encontrarán la clase MySlider dentro del paquete com.utils y encontrarán la clase bastante documentada.
Lo que si me resulta interesante y es lo que quiero compartir, es el modo en el cual está desarrollado. Cuando uno se acerca al mundo ActionScript 3.0 generalmente encuentra como dos de sus grandes ventajas la escalabilidad que nos propone la plataforma y la optimización de recursos, y eeeeso si que es dificil encontrarlo en google..o mejor dicho, muchas veces es complejo comprender y adaptar esta lógica como modalidad de trabajo.
Quienes estén en tema ya lo sabrán, y quienes comiencen a adentrarse pronto lo irán viendo, hay varias formas de optimizar nuestras clases y de comunicarnos con ellas. Esta es tan sólo una de esas maneras. Al momento de desarrollar el slider, tenia en mente que:
- Debía ser reutilizable.
- Debía gestarse dentro del código todo el desarrollo de los contenidos (sprites, movieclips) del slider, para no depender de archivos dentro de la biblioteca.
- Debía tener un grado de personalización.
1 - Para que sea reutilizable, se creó una clase para el mismo. Se puede usar/modificar, etc, se encuentra dentro de la carpeta com.utils y se llama MySlider.
2 - Para no emplear elementos dentro de la biblioteca e indexarlos a la clase, se dibujaron los contenidos de dicho slider por medio de la API de dibujo de Flash. No es este nuestro tema, pero ya le dedicaremos algún post ![]()
3 - Para obtener un grado,(mínimo, pero grado al fin), se pensó en la estructura del código y en el funcionamiento que esperábamos por parte del slider; este debe deslizar un cabezal, en base a las medidas establecer un valor, y luego devolverlo a la clase que lo está empleando. Esto es lo que en verdad nos interesa en este post
y esta es la pequeña solución que yo hallé. Existen otras, desde luego:
En primer lugar, crear un objeto y asignarle todas las propiedades que queremos para nuestro slider; su largo, ancho, color, valor minimo, valor maximo, posición inicial del cabezal, el radio del boton, un valor entre 0 y 1 para el easing.
sliderDataObject = new Object();
sliderDataObject.width = 200;
sliderDataObject.height = 0.25;
sliderDataObject.color = 0xcccccc;
sliderDataObject.min = -0;
sliderDataObject.count = 200;
sliderDataObject.position = 100;
sliderDataObject.buttonRadio = 4;
sliderDataObject.sliderEasying = 0.6;
Una vez definido el objeto y sus propiedades, lo asignámos como parámetro al declarar la clase:
mySlider = new MySlider(sliderDataObject);
mySlider.addEventListener(MySlider.RETURN_VALUE, returnValue);
mySlider.x = 340;
mySlider.y = 80;
addChild(mySlider);
Eso es todo
de este modo, cada vez que queramos usar el slider, definimos de antemano un objeto con todos sus parámetros, y lo enviamos a la clase. Esta usará dichos parámetros para generar el slider.
Conociéndos y manejandos, lo adaptamos a nuestras necesitas y dotamos a nuestro slider de las propiedades que queramos
De todos modos, el mejor modo de entenderlo, es prestando atención al código de la clase MySlider y al código de la clase MainClass y entender de qué manera se comunican. Por último, en la medida que el slider genere valores, se los devolverá a la clase principal. Para lograr esto, en primer lugar asignamos un evento a nuestra clase:
mySlider.addEventListener(MySlider.RETURN_VALUE, returnValue);
y también su respectiva función:
private function returnValue(event:Event):void{
trace(mySlider.actualPosition);
}
Ese es todo el código que necesitamos en nuestra clase principal para obtener un slider funcional. El modo en el que la clase MySlider evalúa la posición del cabezal y se la devuelve a nuestra clase principal (o el código que tengamos en el frame de la IDE) lo encontrarán justamente dentro de la clase MySlider, en la última línea de la siguiente función:
private function onMove(event:Event):void{
var total:Number = sliderWidth;
var parcial:Number = ball.x;
var percent:Number = Math.round(sliderMin + (parcial * (sliderCount-sliderMin))/total);
actualPosition = percent;
dispatchEvent(new Event(RETURN_VALUE));
}
Puede que resulte complejo comprender el modo en el cual se comunican las clases, pero una vez que se logra incorporar esta mecánica, nuestros desarrollos van a tener mucha más fluidez, mayor optimización, mayor personalización y escalabilidad. Por tan solo 7 Kb. contamos con un slider que cumple con todas estas funcionalidades, podemos dotar de las características que queramos, y por sobre todas las cosas, en caso de querer aplicar algún cambio a la clase MySlider, solamente debemos modificar esa única clase y no cada proyecto en el que la hayamos utilizado.
espero que sea de ayuda y a modo de consejo, lo siguiente; el mejor modo de comprender esta lógica es mirando el código de las clases, poniendo especial énfasis en cómo van y como vuelven las variables de una clase a otra.
Saludos!
descargar archivos aqui.
Contenidos libro Flash Extremo
Autor: Mariano Makedonsky
ISBN: 978-987-663-009-2
Paginas: 320
Peso: 395 grs.
El pequeño (horrible pero potente) extremo..
1 | Introducción a Flash CS4
Entorno gráfico y distribución de contenidos | Línea de tiempo | Soporte para 3D | Edición de contenidos, animaciones y movimientos | Adobe AIR
2 | ActionScript 3.0
Nuevos conceptos y mejoras | Migrar a AS3 | Tipos de variables | DisplayList | Crear instancias | Agregar objetos dinámicamente | Eliminar contenidos | Eventos | Programación Orientada a Objetos | Sintaxis de una clase
3 | Dibujo en Flash
Creación de una pizarra de dibujo | Optimización de recursos y pesos de archivo | Dibujo de líneas | Almacenamiento: integración con PHP | Flash + PHP
4 | Manejo de texto en Flash
Conceptos básicos | Creación de un formulario de contacto | Creación de campos de texto | Embeber fuentes | Formato de texto | Control de variables y envío de formulario | Verificación de datos | Enviar variables al servidor | Recibir variables en PHP
5 | Imágenes en Flash
Creación de una galería de imágenes dinámica | XML en FLASH | Controlar la carga de imágenes | Búsqueda basada en Flickr | Introducción a APIs | Integración de Flash con Flickr
6 | Sonido en Flash y espectros de sonido
Sonidos internos y externos | Creación de un reproductor de MP3 | Comenzar y detener la reproducción de un sonido | Asignar y modificar el volumen | Acceder a la amplitud de los canales | Método computeSpectrum
7 | Video en Flash
Introducción a FLV | Generar e importar videos | Emplear componentes: FLVPlayback | Desarrollar un reproductor de video
8 | Cámara web, micrófono y Flash Media Server
Conceptos básicos | Modificar parámetros del audio | Webcam en Flash | Enviar imágenes al servidor | Introducción a Flash Media Server 3 | Grabación y reproducción de videos con streaming
9 | Aplicaciones de escritorio
Flash y Adobe AIR | Crear un navegador web | Mejorar la experiencia de navegación | Publicar la aplicación | Desarrollo de un reproductor de MP3 | Desarrollo del proyecto | Ventanas nativas | Sistema local de archivos
Apéndice | Manejo de archivos
Subir y descargar archivos | Diferencias entre FileReference y FileReferenceList | Definir tipos de archivos | Eventos para el manejo de los contenidos | Subir archivo al servidor
Archivos del libro Flash Extremo.
Gente, aquí les dejo los enlaces para las descargar de los archivos de ejemplo de cada capítulo del libro Flash Extremo. Independientemente de que no lo tengan, les pueden ser de ayuda para algún proyecto que estén llevando a cabo…hay un reprod. de mp3 con ecualizadores, reprod. de video, galerías de imágenes, toma de webcam, de mic, dibujo vectorial, interacción con PHP para subir imágenes, dibujos, enviar mails, manejo de texto, adobe air, Flash Media Server 3, uso de la API de Flickr, está todo bastante documentado en el código…espero les sea de ayuda o les sirva para cualquier proyecto!
Los archivos se encuentran para Flash CS3 y Flash CS4…
1 | Introducción a Flash CS4
>> http://as3hispano.com/file
2 | ActionScript 3.0
>> http://as3hispano.com/file
3 | Dibujo en Flash
>> http://as3hispano.com/file
4 | Manejo de texto en Flash
>> http://as3hispano.com/file
5 | Imágenes en Flash
>> http://as3hispano.com/file
6 | Sonido en Flash y espectros de sonido
>> http://as3hispano.com/file
7 | Video en Flash
>> http://as3hispano.com/file
8 | Cámara web, micrófono y Flash Media Server
>> http://as3hispano.com/file
9 | Aplicaciones de escritorio





