novedades en Flash CS5
Novedad de Flash CS5
Soporte para iPhone.
A su vez, se encargó de remarcar lo que de algún modo intuíamos; si bien Flash permitirá desarrollar aplicaciones para iPhone, esto no quiere decir que el iphone vaya a soportar el formato swf. Luego de un proceso, lo que se hace es crear el formato nativo de aplicaciones para iPhone (.ipa). iPhone NO va a soportar fomato SWF.
Mejoras en edición de videos y en la herramienta Decco:
En cuanto a los videos, los mismos se podrán reproducir en tiempo de edición desde la IDE de Flash, sin necesidad de exportar la película. De este modo, se puede visualizar el video mientras uno edita sus propiedades del mismo (x, y, width, height, etc).
AS3 - método unloadAndStop();
Hasta la versión 9 de FP, contábamos con el método unload() de la clase Loader para proceder a la descarga de aquellos contenidos que eran cargados por medio del método load() de dicha clase. Ahora bien, el problema surgía cuando se generaba la descarga de una película y:
Si contabas con audio o video, estos continuaban con su reproducción.
Continuaban abiertas aquellas conexiones que no han sido cerradas (netConnection, netStream, localConnection, etc)
Continuaban consumiendo recursos todos aquellos procesos de los cuales prescindimos al descargar la película (listeners que, sería razonable, sean eliminados al descargar la película)
Si bien existen motivos para que esto sea así, indudablemente es una molestia. A pesar de que la optimización de recursos es parte de nuestro desempeño, tratar de eliminar absolutamente todas aquellas referencias innecesarias que están haciendo que el Garbage Collector no las tenga en cuenta, es una actividad por demás engorrosa, molesta y llena de inconvenientes durante el proceso.
Por suerte, desde Flash Player 10, contamos con una solución. Solución parcial y aún con varios ajustes por hacer, pero solución al fin:
El método unloadAndStop();
Por medio del mismo no sólo se procede a la descarga de la película swf, sino que se intenta anular aquellos contenidos secundarios del mismo y detener la ejecución de comandos de dicho archivo, por lo tanto:
Se detienen aquellos sonidos que se estén ejecutando.
Se eliminan los listeners que hayan sido añadidos al escenario.
Se eliminan los eventos enterFrame, frameConstructed, exitFrame, activate y deactivate.
Se detienen los temporizadores.
Se eliminan las instancias de cámara (Camera).
Se eliminan las instancias del mic (Microphone).
Se detienen los clips de película.
En vistas a la optimización de recursos, definitivamente es mucho más ventajoso que el método unload(), y evita en gran parte aquellos malabares que debíamos hacer antes de eliminar una película. De todos modos, si bien este es el camino, considero que aún queda mucho por hacer al respecto; sería mucho más productivo nuestro tiempo, y por ende, más interesantes nuestros desarrollos, si el proceso para mantener optmizadas nuestras películas fuese más transparente de lo que actualmente es. Esperemos se mejore día a día en esta cuestión y encontremos nuevas soluciones en versiones posteriores de FP. Si bien queda mucho por hacer, por suerte, el método unloadAndStop() es un buen indicio de estar yendo por el buen camino…
AS3 - SoundMixer.computeSpectrum();
Les dejo esta pequeña clase donde se hace uso del método computeSpectrum() de la clase SoundMixer en modo FFT (Fast Fourier Transform). Por medio del método computeSpectrum() se puede tomar la onda de un sonido que se está reproduciendo., y lluego almacenarla dentro de un ByteArray. Teniendo acceso al mismo, podemos generar representaciones visuales de dichas ondas. Este es un sencillo ejemplo que desarrollé a modo de clase para que sea personalizable, escalable y reutilizable; verán al descargar los archivos que no es de gran complejidad, y lo más interesante es la sencillez de su implementación; modificando algunos parámetros, podemos lograr distintos gráficos, que con un poco de ingenio e imaginación, se pueden adaptar a cualquier proyecto.
click aca para descargar los archivos!
(eliminé el MP3 del .rar para facilitar la descarga. Para que puedas ver el ejemplo en funcionamiento, mové un mp3 a la carpeta sound, y renombrarlo como song.mp3)
index.fla:
Hay cuatro bloques de código:
En primer lugar, importamos la clase:
import com.FrequencyVisualization;
Luego cargamos de manera externa un sonido:
var soundReq=new URLRequest(”sound/song.mp3″);
var typeSound = new Sound();
typeSound.load(soundReq);
typeSound.play(0);
A continuación, creamos un objeto al cual le vamos a asignar una serie de propiedades, y que usaremos para enviarle a la clase. Las propiedades de dicho objeto se van a tener en cuenta dentro de la clase a la hora de dibujar (y redibujar) los contenidos del espectro de sonidos. Se le pueden agregar unos cuantos parámetros más, pero con estos poquitos a mi me alcanzó (al menos hasta ahora) para poder aplicarlo prácticamente a cualquier desarrollo sin tener que hacer grandes modificaciones: Los parámetros a enviar son el color de las barras del espectro (barFill), la cantidad de barras (barsNumber), el ancho de las mismas y su separación (barWidth y barsSeparation) y por último, un valor alpha (barAlpha). Más abajo hay algunas imágenes para ver como combinando distintos valores para estas propiedades, podemos obtener resultados considerablemente distintos.
var visObj:Object = new Object();
visObj.barFill = 0xff0066;
visObj.barsNumber=10;
visObj.barWidth = 2;
visObj.barsSeparation = 2;
visObj.barAlpha = 0;
Para concluir, creamos una instancia de la clase FrequencyVisualization, y le pasamos como parámetro el objeto que acabamos de crear:
var eVis:FrequencyVisualization=new FrequencyVisualization(visObj);
eVis.x=250;
eVis.y=stage.stageHeight-30;
stage.addChild(eVis);
Eso es todo
Los programadores tienen con qué entretenerse dentro de la clase FrequencyVisualization, y quienes no tengan interés en entender códigos ni enredarse en su lógica, tienen un modo sencillo e intuitivo para que en cuatro pasos puedan contar con su ecualizador…
Algunas alternativas:
Modificando los distintos valores de las propiedades que asignamos al objeto que enviamos como parámetro a la clase, obtenemos diversos resultados:
var visObj:Object = new Object();
visObj.barFill = 0xff0066;
visObj.barsNumber=10;
visObj.barWidth = 2;
visObj.barsSeparation = 2;
visObj.barAlpha = 0;
var visObj:Object = new Object();
visObj.barFill = 0xff0066;
visObj.barsNumber=50;
visObj.barWidth = 2;
visObj.barsSeparation = 1;
visObj.barAlpha = 1;
var visObj:Object = new Object();
visObj.barFill = 0×00ff00;
visObj.barsNumber=10;
visObj.barWidth = 2;
visObj.barsSeparation = 2;
visObj.barAlpha = 1;
var visObj:Object = new Object();
visObj.barFill = 0×000000;
visObj.barsNumber=5;
visObj.barWidth = 1;
visObj.barsSeparation = 3;
visObj.barAlpha = 1;
var visObj:Object = new Object();
visObj.barFill = 0xFF9900;
visObj.barsNumber=10;
visObj.barWidth = 10;
visObj.barsSeparation = 2;
visObj.barAlpha = 1;
var visObj:Object = new Object();
visObj.barFill = 0×339999;
visObj.barsNumber=10;
visObj.barWidth = 10;
visObj.barsSeparation = 2;
visObj.barAlpha = 0.2;
NOTA: Al trabajar sobre esta clase, establecí el modo FFT (Fast Fourier Transform) debido al tipo de espectro de sonido que debía representar. El método FFT nos devuelve datos del espectro de frecuencias en lugar de datos de forma de onda. En breve voy a escribir un post con clases y ejemplos de representaciones visuales de datos de forma de onda, en lugar de espectros de frecuencia…veremos que se pueden lograr otras animaciones realmente interesantes.
Saludos!
FlashTracer, Add-on para Firefox
Seguramente muchos conozcan y hagan uso de este add-on, pero para quien sea una novedad, va a encontrar una enorme solución en este pequeño, sencillo y facil de implementar plug-in para Firefox.
Por medio del mismo, podemos visualizar todos los mensajes de salida (outputs generados por la función trace() en Flash) que se ejecuten en un SWF desde la ventana del navegador…
Para que funcione, debemos tener instalada la versión Debug de Flash Player. Se puede hacer la descarga del mismo desde el siguiente link:
http://www.adobe.com/support/flashplayer/downloads.html
Y aquí el link para la descarga del add-on:
https://addons.mozilla.org/en-US/firefox/addon/3469
una vez instalado, lo ejecutamos desde el panel Herramientas de nuestro navegador. Una vez abierta la extensión, en la misma se encuentran las instrucciones para vincularlo correctamente al archivo flashlog.txt (archivo de texto en el cual se almacenan todos los mensajes de salida de Flash al utilizar la versión debug de Flash Player).
Sencillo:
Dentro de nuestro FLA hacemos algún uso de la función trace:
for(var m:uint = 0; m<10; m++){
trace(m, ” - saludos desde as3Hispano.com! :)”);
}
Y al ejecutar nuestra película desde el Firefox y tener abierto Flash Tracer, veremos los mensajes de salida:

Y aquí les dejo otro modo de poder visualizar los trace() de Flash desde el navegador; esta vez, por medio de Firebug (gracias NaN!):
http://labs.findsubstance.com/2008/02/26/firebugs-console-log-flash-debugging-made-easy/
Al menos yo prefiero Flash Tracer por su implementación, y porque su uso es más sencillo; Flash Tracer directamente lee los mensajes de salida guardados en el archivo flashlog.txt, y Firebug establece una comunicación por medio de ExternalInterface para posteriormente mostrar el mensaje en la consola de salida.
Si bien uso Firebug, lo prefiero para otro tipo de soluciones…de todos modos, sobre gustos…
Saludos! ![]()






