Jul 27

Me comentaba un amigo que tenía problemas a la hora de utitilizar en FlashCS3, el código que estaba usando en FlexBuilder, y por eso he hecho un video tutorial explicando como crear y organizar el mismo proyecto con los dos IDE´s. Se muestra como compilar con FlexBuilder, así como utilizar FlexBuilder solo para la edición de código, dejando la tarea de compilar para Flash CS3.

Los puntos tratados son los siguientes:

  • Estructura de directorios para un proyecto ActionScript con FlexBuilder y FlashCS3
  • Creación del proyecto, propiedades y classpath
  • Main class (FlexBuilder) y Document class (Flash CS3)
  • Diferencias básicas a la hora de compilar
  • Propiedades de documento
  • Alineación del Stage
  • Uso de librerías de símbolos Continue reading »

Jul 25

En una larga charla con Juan Muro, sobre los diferentes hábitos de hacer las cosas en lo que se refiere a proyectos ActionScript, llegamos a la conclusión de que muchos flasheros no dan el salto a utilizar otro editor de código que no sea FlashCS3, y mucho menos a compilar (publicar), por desconocimiento, poca información clara al respecto y confusión entre conceptos tales como Flex, FlexBuilder, Eclipse, FDT, classpath, swc, y diversos términos relacionados con la programación orientada a objetos (POO), etc.

La razón es sencilla. Estamos arraigados a Flash hasta la médula, y nos cuesta cambiar nuestras maneras, que buenas o malas, siempre nos han funcionado.

Con este post me gustaría aclarar dudas que se plantean a cualquier flashero con poca o mediana experiencia a la hora de afrontar un PROYECTO ACTIONSCRIPT con otra cosa que no sea FlashCS3. Continue reading »

Jul 14

Estaba yo paseando por Times Square hace poco, cuando mirando todas las ‘publicidades’ que inundan el citado lugar, me encuentro con que en muchas había un cartelito debajo que decía “Powered by Adobe Flash”, yo pensaba que todo aquello se hacia con After Effects o algo así, pero no, resulta que nuestro querido Flash se utiliza para estas cositas también.

En fin, nunca pensé en hacer piezas Flash para ser visualizadas en semejante soporte, pero quién sabe…

May 27

Doy por hecho que el lector de este artículo quiere deshacerse de Flash para compilar un swf. La herrramienta a utilizar es FlexBuilder. ¿Por qué FlexBuilder si solo vamos a usar ActionScript? (si, este post va sobre un proyecto ActionScript, nada que ver con el framework de Flex). Bueno, es simple, FlexBuilder no es ni de lejos, mejor que Flash Develop o FDT para escribir código, pero tiene debugger, y lo uso como herramienta estándar para proyectos ActionScript y proyectos Flex. Así me centro en una sola en lugar de aprendérmelas todas.
Por otro lado lo que me gusta es que al compilar genera un html y swf con su “Express Install” (por si alguien no tiene la versión de Flash instalada). Bueno, vamos al lío… Continue reading »

May 27

Alucino, según leo en este post, Adobe y Flash Player 10 nos trae mas sorpresas como el nuevo protocolo de comunicación RTMFP que funciona bajo UDP (no TCP), y se muestra como alternativa mejorada al protocolo RTMP (basado en TCP) usado por Flash Media Server. Los dos son propiedad de Adobe, aunque el RTMP lo usan diferentes tecnologías de servidor de terceras partes como por ejemplo Weborb o Wowza Media Server entre otros.

Por otro lado las comunicaciones con Flash Player 10 llevarán integradas el códec de audio de alta calidad SPEEX, con el que según se dice, se podrán realizar aplicaciones de sonido y transmisión de voz mucho más potentes.

Pero bueno, a lo que iba el post..
Parece ser que Adobe implementará en un futuro próximo una red de servidores que implementen estas conexiones y que serán accesibles desde Flash Player 10 mediante los objetos de ActionScript “NetConnection” y “NetStream”.

Digamos que el proceso sería el siguiente:

  1. Un cliente swf (swf 1) establece una conexión con un server de Adobe
  2. El servidor le asigna al cliente una ID única y temporal
  3. Otros clientes pueden subscribirse a los eventos y streams del primero (swf 1), mediante dicha ID mientras la conexión siga abierta

Esa misma ID que se establece en la conexión servirá también como identificador para aplicaciones de chat u otras comunicaciones.

¡Gran noticia!

Ahora mismo con RTMP podemos enviar un stream de sonido o video (micrófono o webcam) a un servidor que lo propague (broadcast) a otros clientes swf. Con la nueva tecnología, se podrá enviar un stream directamente de cliente a cliente sin pasar por el servidor, lo que nos abre un mundo de posibilidades enorme.

Además, el envío de datos mediante “NetConnection.send()” no se limita a streamings, sino a cualquier tipo de datos (eso sí, con sus limitaciones de tamaño). Lo que quiere decir que ya no nos hace falta un servidor para hacer por ejemplo un chat, un juego de comunicación en tiempo real, etc.

La gran pega a todo esto es que si frente a nuestra conexión tenemos un firewall que bloquee el protocolo UDP, no funcionará.

Muchos se están preguntando si se podrá implementar una red P2P (peer to peer) con esta tecnología, pero según argumenta Justin Everett (Product Manager for Flash Player at Adobe), las redes peer to peer se basan en lectura y escritura de datos constante en disco duro, guardando en memoria las diferentes partes de los archivos cuando son necesarias. Con Flash Player 10 se puede cargar un archivo del disco duro al runtime, pero se tiene que hacer manualmente, y de uno en uno, por lo tanto el P2P queda descartado.

Y digo yo, que aunque queden descartados los intercambios masivos de datos, si que podríamos hacer un messenger con envío de archivos, un sistema de video conferencia con archivos compartidos entre los clientes, aplicaciones mejoradas de e-learning, juegos multiusuario que trabajen con imágenes y ficheros de usuarios en tiempo real, etc, etc, etc…, y todo como ya he dicho, sin programación de servidor de por medio.

Esperemos que Adobe ponga pronto a disposición los servidores de comunicaciones para que todo esto sea posible, y que se documente bien el Flash Player 10.

Ahí dejo eso, que cada uno saque sus conclusiones.

May 14

En el que quizás sea recordado por la historia como el día que Adobe le hizo un bonito corte de manga al Silverlight de Microsoft ha sido anunciada por fin la noticia que muchos esperábamos con impaciencia.

Adobe, aliada con la mayor parte de las empresas que generan dispositivos de distribución de datos y entretenimiento portátil y de sobremesa, ha anunciado el Open Screen Project. abriendo así las especificaciones del formato SWF 9 y de los FLV, adicionalmente a eso, elimina las restricciones de licencia sobre el uso de los formatos. Permitiendo legalmente crear un Flash Player de código abierto, entre otras cosas.

Así que no creo que tardemos mucho en ver las consecuencias de una jugada que marcará un antes y un después de los desarrollos en actionscript. A partir de ahora quizás debamos replantearnos los posibles usos de nuestras aplicaciones, así como el entorno que pueda rodear a nuestros usuarios. Seguramente no tardaremos en ver reproductores flash player 9 en el opera de la wii, en la psp, iphone y en dispositivos de todo tipo aportando toda clase de utilidades. Para mí esto no es más que la crónica de una noticia que ya era de esperar, pero su llegada abre unas puertas tan grandes que apenas puedo hacerme una idea de sus más interesantes posibilidades.

Parece que seguimos sin tener mucho tiempo para dormir, ya que han colgado en su web un pdf de 285 páginas con los que parece que estaremos un buen rato entretenidos.

Apr 18

Acabo de solucionar un problema con texto dinámico que me ha dado más de un día de quebraderos de cabeza en el trabajo.

El caso

Resulta que los contenidos de un frame en concreto (que no sea el 1) de la línea de tiempo (me refiero a cualquier instancia colocada en el escenario), NO están disponibles, o mejor dicho, NO existen nada más llegar al frame.
Por ejemplo:
- Crea una peli nueva
- Pon un movieClip en el frame 5 con nombre de instancia “prueba”
- Ahora vuelve al frame 1 y en panel de acciones escribe este código:

stop();
gotoAndStop(5);
trace(prueba); // null

El resultado del trace nos da “null” !!!!!
Esto no pasaba en as2, y me fastidia que en algunos aspectos as3 va hacia atrás en lugar de mejorar las cosas (y eso que no puedo vivir sin él).

Solución

Para solucionar esto hay que programar un método que busque periódicamente el movieClip “prueba” hasta que ya esté disponible. ¿Cómo?, pues con un Timer por ejemplo:

stop();
gotoAndStop(5);
trace(prueba); // null
 
var timer:Timer = new Timer(10, 0); // se repite cada 10 milisegundos indefinidamente
timer.addEventListener(TimerEvent.TIMER, AccessContent);
timer.start();
 
function AccessContent(event:TimerEvent):void
{
    if(prueba != null)
    {
        Timer(event.target).stop();
        trace("ya tenemos acceso a prueba: ", prueba)
    }
}

Yo personalmente preferiría no tener que hacer esto nunca, ya que me parece una guarrería, pero a veces, por como está montado el proyecto, (o cómo nos lo han dado), o vete a saber qué cosas, pues tenemos que hacer ñapas como estas.
De todas formas, no se si esto es “lógico” o es un bug.

Saludos

Mar 17

A través de uno de los foros de adobe (”macromedia.espana”), veo que uno de sus integrantes hizo un componente en Flash con el que se pueden ver videos de youTube. Mi sorpresa no ha sido pequeña, ya que hace algunos meses me propuse hacer algo parecido para la web de un amigo, y nunca lo conseguí, debido a la limitación que por aquél entonces tenia youTube y su “crossdomain”. Cuando conseguía cargar el video, éste se escalaba de forma inesperada y su posición no se podía controlar (estoy hablando desde Flash lógicamente).

Muchos pensarán que siempre ha sido muy fácil hacer esto, pero no es asi, os lo aseguro. Embeber el player de youTube en una página html es un juego de niños, pero al intentarlo mediante ActionScript, la cosa cambiaba.

Enseguida busqué en el blog de youTube, cuando me encontré con esto:
http://code.google.com/apis/youtube/overview.html

Donde podréis encontrar toda la documentación y API´s para desarrollar clientes de youTube en varios lenguajes como PHP, Flash, .NET, Rubi, Java, etc. En este link hay un listado de recursos muy interesante, y más concretamente, la as3-youtube-data-api, que es lo primero que busqué al empezar a ver todo este tema.

imagen-1.png

Las API´s no se limitan a la visualización de vídeos. Con ellas podemos acceder a una lista larga de webservices muy interesantes:

Introduction

This library connects to the http://gdata.youtube.com host to collect publicly available information on the YouTube Data API Feeds. You can search for videos, and get data for: standard video feeds, video responses, video comments, user profiles, user subscriptions, user favorites, and playlists.

Y genial, ahora podemos hacernos nuestra propia platarforma de video a costa de YouTube, y sin publicidad de ningún tipo y, desde un montón de lenguajes distintos. Ya nadie tiene escusa =)

Posibilidades infinitas. Creo que esto va a dar mucho de qué hablar, y creo que muchas empresas del sector de hosting de streaming se verán muy afectadas, y otros muchos beneficiados (como es mi caso ).

Mar 04

Estoy metido en un proyecto donde los “artes” han dictaminado que nuestra aplicación Flash (un juego) irá a 12 FPS(frames por segundo). Los motivos no vienen al caso.

Resulta que yo siempre he testado a 31 FPS, por lo que mis animaciones con Tweening (Tweener de Caurina) iban de lujo. Cuando puse el swf a 12 FPS menuda cagadilla, todo a saltos y horrible. Y claro, es que la mayoría de las librerias de Tweening usan el evento ENTER_FRAME para renderizar el movimiento, por lo tanto, a menor tasa de frames por segundo, menos fluidas serán nuestras animaciones, al igual que ocurre con animaciones en timeline.

Buscando por ahí encontré este paquete de animaciones que permite elegir el modo de renderizado entre ENTER_FRAME y un TIMER, además de otra serie de características que me han gustado bastante. Problema del framerate arreglado ! Incluso a 1 FPS la animación rula bién.

Felicitación y gracias al máquina que las hizo (boostworthy.com).
Os animo que que os bajeis el paquete, que viene con documentación, y que la probéis. No tiene desperdicio.

Feb 25

Tanto si usamos Flash CS3 para desarrollar un proyecto de AS3, como si usamos FDT, FLEX y otros, podemos usar e instanciar mediante código los componentes de la versión 3 (v3).

El primer problema que encontramos es que el compilador no encuentra la clase asociada al componente, lo que provocará un error en tiempo de compilación avisando que no se ha encontrado la definición de clase.

En el caso de de Flash CS3, La solución es tan sencilla como añadir a la librería (no hace falta que esté en el escenario) el componente/s que vayamos a usar.

Si no compilamos con CS3, la solución es crear un archivo .swc (desde Flash CS3) donde esté almacenado el componente/s. Automáticamente el archivo generado contendrá todas las clases necesarias y sus dependencias relacionadas con el componente, así como sus assets, que luego linkaremos desde nuestro IDE, momento en el que ya estará todo listo para instanciar como hacemos con cualquier otra clase.

Si todavía no ha quedado claro el asunto, aquí va un vídeo que lo explica