LeoBaraldi – Ejemplos Flash, Ejemplos actionscript, Tutoriales Flash, Tutoriales actionscript, actionscript 3, curso de actionscript

Recursos y ejemplos de actionscript, Flash, AIR, Flex, CSS y HTML. Tutoriales de actionscript 2 y actionscript 3

10 diciembre, 2011
by LeoBaraldi
1 Comment

Centrar movieClip según evento mouse

Este ejemplo acomoda el objeto al centro del stage según donde se haga click. Ejemplo solicitado por mail, se los dejo a quien le pueda ser útil.

Actionscript:
  1. import flash.display.MovieClip;
  2. import flash.events.MouseEvent;
  3.  
  4. var _cuadrado:MovieClip = new MovieClip();
  5. _cuadrado.graphics.beginFill(0xFF0000,1);
  6. _cuadrado.graphics.drawRect(0,0,100,100);
  7. _cuadrado.graphics.endFill();
  8. this.addChild(_cuadrado);
  9.  
  10. var _pointer:MovieClip = new MovieClip();
  11. _pointer.graphics.beginFill(0xFFFFFF,1);
  12. _pointer.graphics.drawCircle(0,0,2);
  13. _pointer.graphics.endFill();
  14. _cuadrado.addChild(_pointer);
  15.  
  16. _cuadrado.addEventListener(MouseEvent.CLICK,onClic);
  17. function onClic(e:MouseEvent):void
  18. {
  19.     _pointer.x = (e.localX -  _pointer.width/2)+ _pointer.width/2;
  20.     _pointer.y = (e.localY -_pointer.height/2)+_pointer.height/2;
  21.     _cuadrado.x = ((_cuadrado.width - e.localX)-_cuadrado.width)+(stage.stageWidth/2);
  22.     _cuadrado.y = ((_cuadrado.height - e.localY)-_cuadrado.height)+(stage.stageHeight/2);
  23. }

29 octubre, 2011
by LeoBaraldi
0 comments

¿Quién diseña las Web?, ¿Cómo diseñar una web?

Este articulo trata de debelar los aspectos básicos que debe tener un diseñador gráfico al afrontar proyectos Webs. Estas ideas y conceptos de diseño son algunas de las reflexiones de los tantos puntos de inflexión a la hora de diseñar.
Seria muy bueno ir extendiendo estas ideas y que ustedes colaboren a la redefinición de la problemática.

La primera respuesta que puedo tener a punta de lengua es un "diseñador", pero… ¿es en realidad un diseñador gráfico? Se suelen presentar sinfines de pseudo capaces del diseño, desde audaces, creativos, artistas, arquitectos, amigos, el vecino, programadores y, alguna vez, un valiente diseñador gráfico.

Esta realidad no se da porque contemos con un parque limitado, sino todo lo contrario. El problema radica más profundamente en el corazón de las escuelas de diseño, donde no se educa, adiestra, ni presenta la herramienta, ni se debate la problemática.

Este es un tema que lo he charlado hasta el cansancio con varios docentes de diferentes instituciones. Los motivos son miles: desde porque no son suficiente 3 años de carrera, porque la informática e internet evolucionan a velocidades que no dan respiro a preparar y ajustar un programa sin que este caiga en desuso, porque no hay profesionales que puedan claramente trasmitir los conceptos y técnicas sobre las herramientas, porque los alumnos de diseño gráfico son solo "gráficos”.

Aclaro que, para mí, el diseño Web es “diseño gráfico”, por el simple motivo de ser un "medio visual". Ojo, algunos se apresurarán a corregir que es audio-visual-interactivo y demás cosas que es verdad, pero desde el origen de los outputs en el caso del “monitor”, los elementos fueron sólo visuales, a duras penas con los escasos pixeles disponibles más la buena voluntad de la imaginación, se lograron cosas fabulosas. Por lo tanto, los problemas que se plantearon originalmente no distan tantos de los actuales. El cliente pretenderá dar solución a una necesidad de comunicar, haciendo uso de las más variadas técnicas básicas o avanzadas del diseño, como el color, la forma, la tipografía, la escala, la gamma, el espacio, el orden, etc.

Todos estos recursos de los más variados son propios y pertinentes a un diseñador gráfico, queda claro que él mismo es la persona más adecuada para dar solución a las funciones y comunicaciones que requieran de orden, jerarquía y semántica de los signos.

Pero sabemos que los matices van mas allá de las fronteras actuales del diseño académico: hay elementos que nos obligan a entender y saber cómo funciona el medio o soporte donde se plasmará nuestro diseño. Así como el diseñador establece un canvas o soporte pre definido (ancho, alto), también se deberá familiarizar, por ejemplo, con el medio de impresión que se utilizará para producir la pieza, porque el diseño puede verse enriquecido o desfavorecido con el simple cambio de una variable, por ejemplo, el sistema de impresión: la serigrafía no será de seguro adecuada para algunos cuerpos tipográficos, que la impresión offset sin problemas puede reproducir.

Constantes y Variables

Estas palabras en el mundo del diseño web son muy recursivas, en diferentes ámbitos y contextos, pero el fin es similar.
Ddiseño web y gráfico tienen los mismos elementos contantes que aprendimos con nuestros profesores: la jerarquía y orden de los elementos para favorecer la lectura o crear un recorrido sobre la pantalla son los mismos principios del papel.
El color también cumple un rol importante en la comunicación web, aunque haya colores que son rápidamente relacionados con grandes marcas impuestas. En relación a ello, si propongo magenta dirán freak. Así mismo, el uso es totalmente válido, las reglas y técnicas siguen siendo efectivas: un titular de color rojo despertará más interés que uno gris.

El tamaño, el espacio y orden también son recursos muy utilizados en la gráfica para generar secuencias de lectura, acentuar un mensaje o significar el mismo. Pero por el contrario, cuando el diseñador se dispone para la Web, pareciera que entra en PAL (pánico, ataque y locura), a tal punto que realiza diseños que jamás propondría en una pieza grafica tradicional.

Hasta aquí, definimos las constantes generales que se presentan al diseñar para la Web; este punto no es realmente el que más complicaciones presenta, ya que un buen diseñador, todo lo nombrado le es habitual y cotidiano.

El problema está en las “variables”: cuando la información debe ser adecuada a una resolución, una limitación tipográfica,  una lectura forzada lineal,  un scroll, un dispositivo de salida particular, una superficie, interactividad, navegación,  una cultura de lectura, un redimensionamiento, accesibilidad, posicionamiento, etc. Aquí, el diseñador gráfico va rumbo al neuropsiquiátrico.

Para que esto no suceda, el diseñador debe estar adecuado al tiempo y la forma de los recursos, técnicas, tendencias, herramientas y dispositivos actuales. No quiere decir que el diseñador tenga que migrar a ser un híbrido ni, menos que menos, sea programador: el diseñador debe conocer el medio donde se desenvuelve sin profundizar ni quitar el foco en su función principal, para el resto existe programadores, analistas y técnicos especializados puntualmente en las tecnologías aplicadas. En la actualidad, el destino del diseñador es el mismo que hace 20 años: “diseñar”. Cambian los medios, cambian los paradigmas y hasta cambia la actividad fundamental, quizás hay quienes vaticinan la desaparición del diseñador gráfico tradicional fuera de las piezas digitales. Yo creo lo contrario: creo que el siguiente paso del diseñador es dirigir, supervisar y coordinar grupos interdisciplinarios donde el fin es prestar soluciones y comunicar.

Por eso ahora, más que nunca, el compromiso es acceder y conocer el medio, conocer el soporte y sus limitaciones, que, al contrario del papel, cuando están se revelan y se convierten en potentes herramientas de creación.

Algunas Variables

Multidimensional

En la gráfica tradicional, podríamos indicar que generalmente se nos presenta una sola dimensión del soporte a trabajar; en la Web pasa todo lo contrario, ya que en la pantalla (aunque sea un elemento plano bidimensional) se puede crear n dimensiones de lienzos, unos sobre otros o unos al lado de otros. Este concepto de apilamiento o layer es una de las características actuales más básicas, como lo es la vieja técnica de perspectiva isométrica para simular un espacio tridimensional.
También lo Multidimensional es afectado por la evolución, disponibilidad y equipos, aunque estas sean de poco uso o en modo de experimentación debemos tener una mera noción de sus virtudes y limitaciones. Con la aparición de los tablet, lo Multidimensional  hace un cambio rotundo, ya que se presenta como recurso normal el uso de múltiples escritorios o canvas, resultando este recurso tan efectivo y natural que la mayoría de los dispositivos táctiles lo adoptan.
Podemos plantear un diseño basado en capas, donde la información adopte importancia según el orden de apilamiento, donde el objeto en primer plano sea el discurso actual del mensaje, donde el apilamiento cuente un discurso, donde un mensaje no necesariamente deba aparecer y desaparecer para dar lugar a otro. Múltiples escritorios, múltiples layers ya están aquí: lo podemos ver en un simple lighbox.
La dimensionalidad puede salirse de nuestra pantalla, un claro ejemplo de ellos es la realidad aumentada, donde lo virtual complementa lo real o viceversa, creando mundos y canales nuevos de comunicación y experimentación.

Resolución

Esta es uno de los limitadores más grandes para el diseñador, ya que la capacidad de representación de pixeles ha ido variando con el tiempo. Hace 10 años, no existían habitualmente monitores en  formatos wide, ni tamaños fuera de las 17 pulgadas en cualquier casa; hoy, en cambio, es común ver monitores de 19 a 21 pulgadas.  Ya antes de la aparición masiva de los LCD se presentaba el problema de la resolución, que en sí consiste en la limitación de cuántos pixeles puede representar la pantalla, tanto en su alto como en su ancho: el diseño se debía adecuar a caber sobre esa pantalla para evitar el scroll o, por lo menos, el horizontal. Por entonces, se diseñaba basándose en medidas de no más de 740px de ancho (como muy generoso), para no superar el ancho de 800px; con el tiempo, los monitores representaron más pixeles y las medidas se fueron extendiendo. No hace mucho tiempo se impuso el modelo de 960px de ancho, que es capaz de mostrarse de manera correcta sobre monitores de 1024x768; pero en la actualidad van imponiéndose medidas como 1080 o más, para resoluciones de 1280x1024.
Con la aparición de monitores más grandes, diríamos que la problemática de las resoluciones se terminó, pero no es así: ahora, por el contrario, muchos sitios quedan demasiado chicos, apiñados y compactos. A esto surge una nueva manera de mostrar la información y ésta se basa en el ajuste de los espacios disponibles; este tipo de diseño se conoce como líquido o elástico, donde las cajas contenedoras y espacios guardan una relación “relativa” con respecto a las dimensiones disponibles. [ Ejemplo ]
Pero aquí tampoco se acota el problema: con la aparición de los Smartphone y tablet, nuevamente se presentan nuevas opciones de ver una página. Ahora la página no sólo debe trabajar para un monitor de 21 pulgadas, sino que en retroceso a una pantalla táctil de apenas 1024 x 768px, que, a propósito, se le suma una característica de accesibilidad que es rotar la pantalla cambiando la relación de aspecto. El diseño, entonces, debe responder a las resoluciones varias, a los dispositivos varios y a la orientación del dispositivo.
Actualmente, para este sin fin de alternativas se presenta una nueva técnica de implementar y organizar la información: el diseño "responsivo", que responde según el dispositivo y orientación del mismo, organizando, reestructurando o quitando elementos según sea necesario para la mejor lectura de la información. [ Ejemplo ]

En general, vemos que la tendencia es exponencial a mejorar la calidad del mensaje al receptor, donde el mismo cumple un rol activo receptor/trasmisor. Dejar claro un mensaje será agradecido por el usuario y  también por el emisor. En la actualidad, un mensaje mal dado y/o un usuario enojado, puede desfavorecer rápidamente a un producto o marca.

Scroll

Ya hablamos que el diseño responde a una resolución y a éste le resulta un scroll. Si es natural ver monitores cada vez más anchos que altos, ¿porque no más altos que anchos? Algunos se preguntarán por qué quitarle espacio al scroll, pero eso es consecuencia a la ley de Fitts, que establece los límites de respuesta de un movimiento con respecto a la distancia: un monitor demasiado alto implicaría un movimiento poco ergonómico e ineficiente.  Al scroll, por alguna razón, muchos se encargaron de eliminarlo; otros, le tienen terror; y algunos hasta afirman que una web sin scroll es más efectiva.
La realidad es que la información en la web es lineal, siempre se presenta un objeto y desde ése se pasa a otro. Desde el inicio, la información fue textual (texto), con el tiempo se agregaron elementos para enriquecer la información, aunque con algunos excesos. Comenzamos a ver páginas donde la animación, el discurso tipo película, la música y el movimiento titilante circundaban la información básica que el usuario solicitaba, generando largas esperas entre secciones, confusión y hasta inaccesibilidad. Por alguna razón, se puso de moda ese “modelo de no dejar mostrar lo que el usuario buscaba”. Como siempre pasa con los modelos equivocados, no soportó la prueba del tiempo y actualmente entendemos que “la información es lo que la mayoría de las personas buscan”, no hay razón de entrar a una Web y esperar que se cargue una música de background como requerimiento para acceder a un formulario de consulta.
Entonces es aquí donde el scroll aparece como nuestro aliado, porque al disponer de él, disponemos de más espacio lineal para contar y mostrar información, para organizarla en un orden de lectura natural (porque el usuario naturalmente sabe scrollear) y hasta podemos explotar esa cualidad para dar un discurso visual donde el usuario manipule el scroll como un time line; el tiempo de carga y disponibilidad de la información es progresivo y no a demanda, es decir que en vez de ir a una nueva sección y hacer una nueva consulta, se navega sobre el mismo canvas.
Al diseñar, es importante contar con el conocimiento de los altos estándares y los mínimos, tomar el alto como una unidad relativa y modular, donde la información principal sí se muestre completa desde la primera lectura y, por cada escroll, se sorprenda o se presente un discurso coherente.

La lectura

Al leer información sobre una web se deben establecer los criterios básicos aprendidos en diseño editorial, pero a eso sumarle criterios que favorezcan la lectura en el modelo Web.
Al observar una página web, el ojo salta de módulos a módulos de información, desde objetos que se mueven a objetos estáticos; clasifica, organiza y evalúa la información si es pertinente a lo que está buscando. Nuestro deber como diseñadores es evitar el stress visual o que este sea un factor positivo, utilizando recursos simples, como tipografías claramente jerarquizadas, cuerpos tipográficos adecuados, colores planos de buen contraste, espacios de descanso, fondos despojados de texturas en áreas de lectura, cajas organizadoras,  separadores de módulos, estructuras repetitivas que establezcan un sistema de lectura, donde en cada página se presenten los mismos elementos organizadores de la información propuestos por el diseñador.
Hay quienes antes una página sin movimientos solicitan que sea más “dinámica”, ¿qué mejor que localizar rápidamente la información? Hay criterios según los que movimientos, destellos y ruidos mejoran la experiencia del usuario; esto es  totalmente equivocado: el movimiento circundante a la información perturba al ojo y a la visión periférica, produciendo una molesta atención residual.
Que muchos de los sitios Web estén estéticamente y funcionalmente mal diseñados no quiere decir que sea lo correcto. Y que el cliente tenga una idea errónea de dinámico también es un problema a educar.

Usuarios

El destino de nuestras piezas gráficas tradicionales establecen un cierto marco de previsión y cordura, por decirlo de alguna manera. Sabemos que si el mensaje está en español, claramente será apreciado por el 99.9% de la población (Argentina); que si la lectura la hacemos de izquierda a derecha, no presentará dificultades de lectura. En general, vemos que un usuario de una pieza gráfica sigue ciertos criterios y normas establecidas; en cambio, el usuario web se comporta de manera" errante"," diferente", "creativa" y hasta "esquizofrénica". Nada puede estar sujeto a que funcione correctamente ante un usuario, ya que de alguna manera éste logra romper todos los esquemas.
Desde hacer clic atrás, delante, atrás, atrás, cerrar el navegador, abrir uno nuevo, ir a Google y en él escribir www. Clarín.com, ¡olvidando totalmente para qué sirve la barra de direcciones!

Como se puede apreciar, el usuario quizás requiere una mayor atención para utilizar una Web que para leer una pieza gráfica convencional. Aclaro: ¡el usuario demanda más del diseñador!
Establecer criterios claros de navegabilidad es uno de los puntos fundamentales. Presentar siempre un menú principal superior claro, con alto contraste y resaltando en qué lugar se está, a modo de rastro; presentar barras de navegación opcionales, como el menú en modo texto-link en el footer, son buenas costumbres que el usuario agradecerá.
Evitar la recargas de paginas entre sección y sección es un buen recurso de ahorro de información, más para aquellos sitios donde se reciban grandes flujos de visitantes. La información más vista o más solicitada puede ser presentada completa en la portada inicial junto a los otros elementos ya cargados.
No auto cargar elementos multimedia, como videos, sin la previa solicitud del usuario y, menos que menos, reproducirlos automáticamente fuera del foco visual.
Trabajar con varias columnas de información, sectorizando y valorizando la información de mayor a menor, donde los elementos más importantes y más visitados se encuentren en la parte superior del sitio.
No bloquear elementos de accesibilidad, como botón izquierdo del mouse, ampliar, guardar o imprimir.
Disponer de la capacidad de propagación en diferentes medios o dispositivos, ser versátiles con las salidas asegurará un mayor número de visitantes.
Ajustarse a estándares para asegurar accesibilidad y mejor compatibilidad con navegadores y sistemas de asistencia para personas con capacidades diferentes.
Crear contenidos diferenciados para dispositivos como impresoras, celulares o lectores para ciegos.
Crear contenidos ricos, originales, útiles y para humanos.

Navegadores

Podemos afirmar que la mayoría de los mortales entiende que no todo es y fue IE (Internet Explorer), que existen, gracias a Google y tecnologías open source,  Firefox y Crhome, entre otros. ¿Pero dónde radica el problema con los navegadores? En cómo interpretan los elementos gráficos propuestos por el programador, elementos que son los establecidos por el diseñador.

Esta diferencia de renderización entre navegadores se puede presentar más o menos acentuada según sea la combinación de fórmulas. Aunque hay pautas generales a seguir para evitar algunos problemas de presentación, IE siempre nos sorprenderá con algo nuevo. Esta dificultad tiende a desaparecer en rasgos generales, pero no podemos ignorar que IE es el navegador más popular y con el que más problemas tenemos. No es necesario entrar en detalles de por qué Microsoft ignora todas las reglas establecidas de cómo mostrar una Web, sí vamos a saber que hay métodos de normalización entre navegadores. Podemos hacer uso de scripts (http://html5boilerplate.com/) que corrijan aspectos de la presentación o cargar hojas de estilos alternativas según el navegador.

Pero antes de entrar en detalles de navegadores, deberíamos definir nuestro alcance, es decir que el diseño debería partir desde la “accesibilidad” e incluyo en esa palabra la disponibilidad tecnológica: aunque como usuario no tenga limitaciones motrices, ni visuales, auditivas, etc., puedo no contar con la plataforma o dispositivo óptimo, o sí contar un una buena plataforma y un navegador anticuado (IE 5 o 6). Entonces, vemos que el diseño debe partir de la base de: ¿Qué navegadores o a quiénes creemos accesibles para nuestro desarrollo?. Resultará que si quiero que mi Web sea totalmente accesible, yo diseñador deberé limitar los elementos decoradores a su forma más rudimentaria o nula, dejando quizás texto plano y de esa manera asegurar el renderizado.

Actualmente ya no se presentan soportes ni desarrollos para IE 5 y 6, son escasos, pero sí se estimula a normalizar para IE7. IE8 presenta mucho más soporte y compatibilidad con CSS2 y HTML4, pero nada para CSS3 y HTML5. IE9 es la gran promesa, donde por primera vez (a golpes) Microsoft entiende que no se puede presentar la información sin ajustarse a un criterio establecido, normalizado y universal. IE9 promete soporte para HTML5 y CSS3  de manera muy exitosa, superando en algunos test al mismísimo Firefox. Quizás en un día donde no exista mas IE7 y IE8 estos temas serán para el recuerdo, aunque conociendo a Microsoft, ¡alguna sorpresa nos debe esperar!

¿Pero qué pasa con el resto de los navegadores? Nada. Ellos, en su mayoría, ya van por versiones muy actualizadas: en estos últimos tiempos, se popularizaron los navegadores con motores open source, como WebKit y Gecko. Estos motores, a diferencia de IE, se encuentran en la vanguardia de los estándares y proveen soluciones iguales en la capa de diseño, más algunas particularidades especiales según el navegador.

En general, se vislumbra un final feliz para todos aquellos diseñadores y maquetadores que tanto sufrieron: las cosas por fin se verán iguales o, por lo menos, muy parecidas.

Agradecimiento: La colaboración y aportes de la Diseñadora Gráfica Mercedes Olano, que gratamente cuento con su amistad y calidad profesional. Gracias Mechi!

4 septiembre, 2011
by LeoBaraldi
1 Comment

Formatos de video. MPEG, FLV y AVI.

Como existe diferentes tipos de formato de imágenes tales como TPEG, TIFF, GIF etc. También para los videos, entender porque y como funcionan dichos formatos ayudara considerablemente lograr mejores resultados en nuestra Web.

Que es un vídeo MPEG:

Las siglas MPEG corresponden a Moving Picture Experts Group el cual es un grupo de trabajo encargado de impulsar estándares con respecto al uso de las imágenes.

Los videos en dicho formato tienen por característica una compresión que los hace más livianos al momento de transportar. El sistema de compresión consiste de la fragmentación de los datos y el almacenamiento de aquellos que son diferentes, los cuales se repitan son quitados logrando una mejora en el peso total del archivo.

En la antigüedad este sin dudas fue uno de los formatos más adecuados y prometedores para la Web. Actualmente se considera desestimado con respecto a otros formatos como H264 o OGG Theodora que prestan mejor calidad / rendimiento.

Que es un vídeo AVI:

El formato AVI (siglas en inglés de Audio Video Interleave) es el formato propuesto por Microsoft desde 1992 como contenedor de videos y audio.

El video o audio no necesariamente tiene que ser AVI, ya que este es un contenedor, el códec que interpreta el flujo puede reproducir otros formatos como DivX, MP3, AC3 etc.

La propiedad más importante de este formato es sin dudas su capacidad de contener varios flujos de información en el mismo fragmento de datos. Esta capacidad se denomina interleave y es la que nos da la posibilidad de cuando vemos una película poder cambiar el audio de un idioma a otro. Por ende quiere decir que el cuadro y el sonido van vinculados unos con  el otro.

Este formato aun sigue siendo muy popular dado que la distribución de películas hogareñas en su mayoría CD-ROM contó con versiones en AVI DviX logrando muy buena calidad sin requerir un DVD-R.

En la actualidad es muy raro ver la implementación de AVI en Web.

Que es un vídeo  FLV:

Flash Video es un formato contenedor a igual que AVI diseñado para transmitir video en la Web. El formato fue creado por la empresa Macromedia y continuado por Adobe después de su adquisición. Flash video puede ser reproducido por el Flash Player principalmente aunque si se instala los códec de ffdshow tambien se pueden reproducir en otros player como Windows media. Actualmente Flash Player se encuentra en casi toda la población de equipos por lo tanto es un formato muy popular lo que llevo a sitios como YouTube, Yahoo video y Google video a utilizarlo como reproductor estándar.

La calidad del video en general es buena, después de las version 8 se introdujo un nuevo códec de compresión On2 TrueMotion lo que incremento la calidad considerablemente. Las últimas versiones de FVL ya trabajan con soporte H264 brindando calidad en alta definición (HD).

¿Entonces que formato de vídeo usamos para Internet?

Claro esta que para web lo ideal es usar Flash video, por sus prestaciones tanto en peso / calidad y la nueva disponibilidad de soportar video en HD. Pero no solo esas cualidades son las que lo destaca del resto, tenemos que considerar que Flash Video puede interactuar con el lenguaje de programación que interpreta el Flash Player (ActionScript).

Este ultimo nos abre un océano de posibilidades, desde la manipulación del tiempo, eventos, a interactividad. El video como secuencia lineal con Flash video ya no lo es mas, y pasa se ahora un medio interactivo con el usuario.

También Flash video cuenta con la posibilidad de manejar canales alpha (transparentes) para lograr montajes sobre fondos croma  y el poder transmitir en Flash video en modo streaming (vivo) a una cantidad de usuarios al mismo tiempo.

Actualmente es el formato de mayor uso, penetración y compatibilidad, desde películas, programas en vivo hasta salas de chat con audio y video, son las posibilidades que brinda Flash Video.

El reproductor de FLV.

Para reproducir un video en formato FLV, puede realizarlo desde una aplicación de terceros como por ejemplo Mplayer, o incorporar el video en un archivo FLA (Flash). También puede leerlos en modo streaming utilizando algún reproductor.

¿Como convierto archivos AVI, MPEG a FLV?

Cuando se instala el programa de desarrollo Adobe Flash, el mismo incluye una aplicación llamada Flash Video Encoder. Esta es la encargada de convertir formatos como AVI, MPEG, MOV, MP4, MP3 etc. a formato FLV.

También existen aplicaciones de conversión de terceros. Aunque lo recomendable es usar la de Adobe si es que queremos conseguir buenos resultados.

Es importante destacar que para convertir formatos de video a Flash video, es necesario tener instalado QuickTime, ya que este nos brindara de los códec secundarios que requiere el Flash Video Endoder.

25 junio, 2011
by LeoBaraldi
0 comments

Video en la Web, conceptos básicos.

El avance en compresores y ancho de banda disponible dieron origen a una explosión de aplicaciones y uso del video en la Web. Desde sitios como YouTube a sitios personales que interactúan con video logrando una mejor experiencia al navegar contenido multimedia.

El uso de video desde sus principios implicaba un gran problema a la hora de implementarse y reproducirse. El mismo requería no solo de plug-in o complementos especiales instalados en nuestro sistema. También consumía mucho ancho de banda con respecto a lo que se disponía años atrás. Actualmente quizás el peso de los videos no se vio reducido, al contrario, con respecto a nuevas tecnologías como el HD (Alta definición) se incrementó. También se amplio considerablemente la velocidad de descarga haciendo los videos mas accesibles y disponibles para el común de los usuarios.

¿Que necesito para ver videos?

Los requerimientos actuales para reproducir video desde un navegador no están lejos de los computadores más básicos. Pero es importante saber que una buena cantidad de memoria RAM y una placa de video de media calidad son los requerimientos básicos. Esto también requiere una conexión a Internet de por lo menos 512 kb/s si queremos ver video sin cortes a baja calidad. Actualmente se dispone de videos en formatos de mayor calidad como HD 240p, 360p, 720p y 1080p. Cuando mayor es la calidad mayor es el peso del video, por ende se requiere de mayor velocidad de descarga si es que no queremos percibir cortes.

Otro punto importante es el Software, requerimos de programas o lo que se conoce como Códec o decoder para visualizar los videos. En la actualidad contamos con diferentes formatos de videos, algunos más populares que otros.

Dichos códec son los encargados de descomprimir o interpretar el video y mostrarlo visualmente de manera correcta. Cuando no contamos con los adecuados puede pasar que no podamos abrir el archivo o solo escuchemos el audio y no veamos ninguna imagen.

Actualmente los códec mas comunes vienen incluidos en el SO (sistema operativo) aunque hay formatos como H264 que requieren por ejemplo instalar el Flash Player para poder visualizarlos desde la Web. También existen formatos como MOV o MP4  que pueden ser preproducidos por el player de Flash o el QuickTime de Apple.

¿Porque tantos formatos?

Los videos son una secuencia de imágenes a cierta cantidad de cuadros por segundos, es decir que si por analogía usamos el mismo criterio que las imágenes podemos llegar a la conclusión que cuando mayor es la calidad de cada imagen mayor es el peso total, cuando mas colores tenga una imagen mayor es el peso, cuando mas datos por píxel esta utilice, mayor es el peso.

Otro factor importante es el tamaño respecto a su alto y ancho, cuanto mas grande es la área del video mas Kb. ocupara.

Con este criterio  los formatos van a depender no solo por el medio que lo digitalizo sino también por el medio de transporte. Si el medio es un disco DVD el formato puede ser “.bov” a una calidad HD sin casi ningún tipo de compresión. En cambio si el medio es la web necesitamos un formato adecuado que asegure calidad / peso como el MP4 o FLV.

La compresión es el factor de bytes quitados que no son necesarios para almacenar un dato completo, ya que esos datos pueden ser reconstruidos al momento de descomprimir tomando otros datos similares o contiguos. Cuando mayor es factor de compresión, mayor es la cantidad de datos quitados del archivo original. Una compresión excesiva lleva a la perdida de datos y por ende menor calidad del video. Según con el método de compresión o códec que se utilice vamos a lograr los resultados buscados. Los formatos mas conocidos son .AVI y .MOV, cada uno de estos formatos cuenta con sus compresores como DIVX para .AVI o el H264 para los .MOV.

En conclusión a la hora de elegir el formato no hay nada a ciencia cierta que indique cual es el mejor, simplemente lo será el que se adecue a las circunstancias buscadas. Lo ideal es lograr menor peso y mayor calidad, si logramos esa ecuación cualquier formato será igual. Pero no olvidemos que formatos como H264 “MOV, MP4 y QT” tienden a lograr excelente calidad a menor peso.

Actualmente Adobe Flash soporta video en formato HD  es decir que entre el formato nativo FLV (Flash video) también actualmente con cualquier versión superior a la 10 del Flash Player podremos visualizar videos en formato .MOV, MP4, FLV, F4V o H264.

Ya como dijimos antes el formato será adecuado según el uso que queramos conseguir, si lo que queremos es mostrar un video en alta calidad a un tamaño razonable y medianamente con un peso liviano, usaremos MP4 o H264. En cambio si queremos un video de fondo de menor calidad y prioridad en el peso (poco peso), el formato adecuado será FLV. No quiere decir que los videos en FLV sean siempre de baja calidad, la calidad y el peso lo vamos a definir desde el Flash Encoder cuando preparemos nuestra película, en los capítulos siguientes veremos paso a paso dicho proceso de compresión.

Uno de los factores mas importantes que tiene los archivos en FLV es que soportan un canal alpha (transparencia) igual que los MOV, y también incorpora un sistema de marcadores mediante metas datos llamado cuepoint.

Los cuepoint son puntos de anclajes donde el video ejecuta un evento cuando la cabeza lectora pase por el mismo. Útil para subtítulos, interactividad o sincronismo de eventos.

7 marzo, 2011
by LeoBaraldi
3 Comments

TweenMax – TweenLite, movimiento, transiciones desde actionscript

Desde que flash es un lenguaje puramente OOP se incremento sustancialmente la disponibilidad de clases personalizadas. En este caso contamos con la clase Tween escrita por  Jack Doyle de fácil y excelentes resultados.

Actualmente también podemos contar con clases personalizadas como la TweenMax o TweenLite creada por Jack Doyle (http://www.greensock.com) que son mucho mas completas. Estas clases no sólo tienen más propiedades, suavizados y efectos sino también que son ideales para controlar objetos diferentes a los heredados por InteractiveObject como por ejemplo sonido o fotogramas.

La diferencia entre la versión Max y Lite es simplemente su peso, por consecuencia en la versión Lite hay métodos que no están disponibles.

Descargada la clase e importada a nuestro Actionscript vamos a poder implementar su uso de la siguiente manera:

Actionscript:
  1. import com.greensock.*;
  2. import com.greensock.easing.*;
  3. TweenLite.to(peli_mc, 1, {y:225, ease:Elastic.easeOut});

Como se ve, básicamente es lo mismo que la clase Tween de Adobe pero con la gran particularidad que sólo indicamos la posición final del objeto utilizando el método “to”. Esto es una ventaja sustancial a la hora de mover objetos mediante código cuando no sabemos la posición inicial que tendrán.

La estructura de uso es mediante una clase estática “TweenLite” o “TweenMax”, utilizamos el método “to” para indicar el movimiento y propiedades. En los paréntesis indicamos primero el objeto a mover, el tiempo en segundos (por defecto), ecepto que entre las llaves indiquemos useFrames:true el cual en ese caso la interpolación se completara teniendo en cuenta la cantidad de fotogramas. Las llaves {} indicamos las propiedades y métodos a utilizar separados los grupos por coma (,)

Actionscript:
  1. TweenLite.to( objeto, tiempo {métodos} )

Los easing también son similares a la clase Tween de Adobe con la diferencia que contamos con una cantidad superior de movimientos. En este caso utilizamos un movimiento elástico al final de la animación. Al importar todos los Easing tendremos disponibles los siguientes movimientos: Back, Bounce, Circ, Cubic, CustomEase, Elastic, FastEase, Linear, Quad, Quart, Quint y Strong con sus respectivos comportamientos (easeOut, easeIn, easeInOut).

Fíjese que el movimiento va indicado dentro de las {}, la clase utiliza esta nomenclatura para indicar el método y el valor. Si quisiéramos indicar una demora antes de iniciar la animación seria así: {delay:1}

Actionscript:
  1. TweenLite.from(peli_mc, 1, {y:225, ease:Elastic.easeOut,delay:1});

Podemos agregar cuantos métodos quisiéramos separados por coma(,) ejemplo:{y:10,x:45,delay:10, onComplete:listo}

También esta clase cuenta con una opción novedosa que es poder indicar posición final del objeto utilizando su posición actual, al contrario del ejemplo anterior. En ves de utilizar el método “to” lo reemplazamos por el método “from”.

Actionscript:
  1. import com.greensock.*;
  2. import com.greensock.easing.*;
  3. TweenLite.from(peli_mc, 1, {y:225, ease:Elastic.easeOut});

El valor 225 del eje “y” ahora no es la posición final sino la inicial.

Controles

TweenMax o su versión lite dispone de métodos para controlar el estado del movimiento mientras este se realiza.

pause() y resume(): Pausan o reanudan la interpolación donde se encuentre actualmente.
Reverse (Boolean): Indica que debe ir en reversa la interpolación, si usa true indica que usa el mismo tiempo para reversa que el tiempo inicial.
useFrames (Boolean): indique true para utilizar frames como  unidad de tiempo y no segundos.
Delay (Number): Segundos de demora antes de realizar la animación.

Ejemplo como usar el método pause y resume: Es importante para este tipo de interpolación crear una variable con la referencia al tween.

Actionscript:
  1. import com.greensock.*;
  2. import com.greensock.easing.*;
  3. //creamos una referencia
  4. var miTween:TweenMax = TweenMax.to(peli_mc,3,{y:300,ease:Quint.easeOut});
  5. var isToggle:Boolean = false;
  6.  
  7. stage.addEventListener(MouseEvent.CLICK,stageClic);
  8. function stageClic(e:MouseEvent):void
  9. {
  10. if (isToggle == false)
  11. {
  12. miTween.pause();
  13. }
  14. else
  15. {
  16. miTween.resume();
  17. }
  18. isToggle = ! isToggle;
  19. }

Este ejemplo pausa y reanuda la animación del objeto cada vez que hacemos click en el escenario.

Eventos:

Esta clase cuenta con un sin numero de controladores de eventos para facilitarnos la tarea de manipulación de objetos secuencialmente según el estado de los mismo.

Los eventos están relacionados a una función, siguiendo internamente los principios de la clase Event y sus listeners correspondientes. Así mismo la nomenclatura es muy fácil e intuitiva su uso.

El ejemplo siguiente se agrega un escuchador para cuando se completo la interpolación mediante el método onComplete.

Actionscript:
  1. TweenMax.to(peli_mc, 1, {y:300, ease:Quint.easeOut,onComplete:seCompleto});
  2. function seCompleto():void
  3. {
  4. trace("Interpolación completa");
  5. }

Eventos que podemos utilizar:

onStart: Ejecuta un evento cuando comienza la animación.
onStartParams: Cuando comienza la animación envía parámetros a la función relacionada.
onComplete: Ejecuta un evento cuando la animación finalizo.
onCompleteParams: Cuando finaliza la animación envía parámetros a la función relacionada.
onRepeat: Ejecuta un evento cada vez que la animación inicia un ciclo.
onReverseComplete: Ejecuta un evento cuando el movimiento en reversa llega a su fin.

La clase cuenta con mucho mas detectores de eventos y ello en su mayoría pueden recibir parámetros como el ejemplo de “onCompleteParams”. No se puede usar onComplete y onCompleteParams al mismo tiempo para detectar y enviar parámetros. Simplemente use onCompleteParams para detectar el final de la animación y entre paréntesis () envíe los valores como parámetros.

Actionscript:
  1. import com.greensock.*;
  2. import com.greensock.easing.*;
  3. TweenMax.to(peli_mc, 1, {y:300, ease:Quint.easeOut,onCompleteParams:seCompleto (4)});
  4. function seCompleto(id:uint):void
  5. {
  6. trace(“parametro pasado: ”id);
  7. }

En conclusión la clase Tween de Adobe es ideal para interpolaciones básicas o iniciales. En contrapartida vamos a poder explotar mejor el código tanto con interpolaciones y efectos con paquetes personalizados como TweenMax, el uso al momento de programar justificará cual es el más adecuado.

10 enero, 2011
by LeoBaraldi
1 Comment

Librerías de animación en ActionScript 3, animación en AS tercera parte

La animación mediante interpolación de movimiento es una tarea de tipo manual, la cual presenta dificultad si es que queremos animar objetos que son cargados dinámicamente o sus propiedades son relativas. Para ello se implementa paquetes para manejar movimiento, eventos y física sobre objetos desde el código.

Tween

Entre las clases nativas de Adobe Flash, contamos con una llamada Tween, la cual pertenece al paquete fl.transitions, dicha clase hereda de EventDispatcher > Object.

Nota: “EventDispatcher” Clase que se encarga de que los elementos cargados en la lista de visualización puedan manejar eventos.

La clase Tween nos dará la posibilidad de animar objetos, editar sus propiedades, como por ejemplo opacidad (alpha) o escala (scaleX) utilizando código. También es importante saber que dicha clase nos permite manipular el tipo de física para un objeto determinado (aceleración, desaceleración o rebote).

La clase Tween en la versión de AS3 se implementa de la misma manera que las versiones anteriores en AS2, pero cambia la escritura literal de sus propiedades, métodos y eventos.

Implementación básica

Se requieren en el escenario un MovieClip con el nombre de instancia peli_mc. Haga clic en el primer fotograma y coloque lo siguiente:

Actionscript:
  1. import fl.transitions.Tween;
  2. import fl.transitions.easing.Elastic;
  3. var miTween:Tween = new Tween(peli_mc,"y",Elastic.easeOut,0,100,1,true)

Importamos la clase Tween "import fl.transitions.Tween;"
Esta es la clase encargada de darnos todas las posibilidades para mover y editar propiedades de un objeto, como por ejemplo un movieClip.

import fl.transitions.easing.Elastic;
Importamos la clase de suavizado de movimiento, cuando movamos un objeto con esta clase podremos indicar comportamientos físicos como aceleración, rebote o desaceleración tanto al inicio o final de la animación.

var miTween:Tween = new Tween(peli_mc,"y",Elastic.easeOut,0,100,1,true)
Finalmente creamos el objeto pasando por parámetro los valores requeridos. En este caso el objeto se llama miTween y al llamar el constructor (new) pasamos los siguientes parámetros:

peli_mc (Objeto): Nombre de instancia o nombre de variable del objeto a modificar su propiedad. Es importante recordar que sólo se pueden afectar a objetos que hereden de la clase InteractiveObject, por ejemplo: MovieClip, Sprite, TextField, Stage, Loader y SimpleButton.

“y” (String): Cadena de texto que representa la propiedad a modificar, en este caso la posición en el eje Y.

Elastic.easeOut (Function): El tipo de suavizado del movimiento. Si quisiéramos que el movimiento se comporte como un elástico y rebote al final de la animación, ésta es la mejor opción, o en su defecto podemos usar las siguientes: Back, Bounce, Elastic, None, Regular y Strong las cuales debemos importarlas a todas si es que necesitamos disponer de ellas.

Fíjese que al final de la línea de código se agrego un asterisco (*), el cual indica cargar todos los paquetes de ese directorio. "import fl.transitions.easing.*;"

A estas propiedades de aceleración le sumamos el suavizado que queramos: easeIn, easeOut y easeInOut.

0 (Number): Valor inicial o comienzo de la propiedad “y”.

100 (Number): Valor final de la propiedad “y”.

1 (Number): Duración de la transición.

True (Boolean, por defecto false): indicador si vamos a sincronizar la transición con segundos como unidad de tiempo o con los fotogramas. True, para utilizar una medida de tiempo en segundo, false para utilizar una medida de tiempo expresada en fotogramas.

En el ejemplo anterior podemos ver que inmediatamente cuando compilamos el swf se ejecuta la animación del MovieClip en el eje “y”. Si quisiéramos controlar dicho movimiento desde un evento del mouse tendríamos que utilizar el método start(); para dar comienzo a la interpolación cuando hacemos clic en el MovieClip.

Actionscript:
  1. import fl.transitions.Tween;
  2. import fl.transitions.easing.Elastic;
  3. var miTween:Tween = new Tween(peli_mc,"y",Elastic.easeOut,0,100,2,true);
  4. peli_mc.addEventListener(MouseEvent.CLICK,onClick);
  5. function onClick(e:MouseEvent):void
  6. {
  7. miTween.start();
  8. }

Ahora al hacer clic en el MovieClip ejecutamos la interpolación mediante el método start().
Los métodos más comunes que podemos utilizar son los siguientes:

  • start(): Inicializa la interpolación.
  • stop(): Detiene la interpolación.
  • resume: reanuda la interpolación donde se detuvo.
  • fforward: Adelanta la interpolación hasta el final.
  • rewind: Retrocede la interpolación al valor inicial.

También es importante recordar que la clase Tween cuenta con detectores de eventos que nos facilitarán la tarea de animar objetos y desencadenar acciones según los estados de los mismos.

Actionscript:
  1. import fl.transitions.Tween;
  2. import fl.transitions.easing.Elastic;
  3. import fl.transitions.TweenEvent;
  4. var miTween:Tween = new Tween(peli_mc,"y",Elastic.easeOut,0,100,2,true);
  5. peli_mc.addEventListener(MouseEvent.CLICK,onClick);
  6. function onClick(e:MouseEvent):void
  7. {
  8. miTween.start();
  9. }
  10. miTween.addEventListener(TweenEvent.MOTION_FINISH,onTweenFinish);
  11. function onTweenFinish(e:TweenEvent):void
  12. {
  13. trace("movimiento finalizado");
  14. }

En el ejemplo aquí expresado se agrega un escuchador al evento que se dispare cuando la interpolación a finalizado por completo.

Otros eventos utilizados normalmente son:

  • MOTION_START: La interpolación a comenzado.
  • MOTION_STOP: Se detuvo la interpolación mediante el método stop().
  • MOTION_RESUME: Se reanudó la interpolación luego de una pausa.
  • MOTION_LOOP: Se completó un ciclo de un loop (yoyo).

Nota: se importó la clase TweenEvent para estos detectores de eventos. (import fl.transitions.TweenEvent;).