#014 FDT [Q] Tips: autocompletion estilo FlashDevelop

Sé que no es viernes, pero hace mucho que no escribía un tip… asi que os lo regalo el Lunes, este va dedicado a los que trabajan con FDT + eclipse.

Muchas son las veces que he intercambiado entretenidas conversaciones con otros programadores (como con mi amigo Luis) sobre qué entorno es mejor para programar en AS2, o AS3. FlashDevelop y FDT para eclipse salen siempre a la palestra (también Flex Builder obviamente…) y en ese momento comienza el fuego cruzado. Tengo que reconocer que tengo mucha más experiencia usando FDT que FlashDevelop, pero he decidido que le voy a dar una nueva oportunidad a FlashDevelop para el próximo proyecto que me ha tocado programar en el estudio, hay cosas que me gustan y siempre me han gustado de él.
Seguir leyendo…

LocalConnection+ FlashGet

Durante el desarrollo de uno de los últimos proyectos en el estudio en colaboración con Netereo, hemos asistido a uno de esos errores inexplicables que te hacen pensar antes de dormir y a veces parecen ser cosa de los duendecillos que creemos hay dentro de nuestro ordenador.

Os explico, para sólo dejar abrir un juego realizado en flash simultáneamente en el ordenador, utilizábamos LocalConnection, de tal forma que el juego al iniciarse intentaba conectarse a una determinada conexión, si no podía conectarse era porque no existía con lo que dejábamos abrir el juego y creábamos la conexión para si se intentaba abrir otro juego si se pudiera conectar, por lo tanto dando mensaje de error por 2 juegos simultáneos.

Seguir leyendo…

HitTest de un MovieClip en un contenedor escalado

A raíz de un proyecto que estoy desarrollando en [Q] me he encontrado con un problema que a priori puede parecer común pero que por lo menos a mi me ha traído por la calle de la amargura la tarde y parte de la noche de este sábado.

El caso es que al reescalar unos MovieClips en los que en la programación un hitTest hacía referencia a ellos, se volvía loco no detectando bien el choque. Pues bien, después de muchas peleas encontré la solución que era tan sencilla como utilizar localToGlobal

Seguir leyendo…

Trabajar con más de una base de datos

Nosotros generalmente usamos una clase propia encargada de gestionar las operaciones con la base de datos (conexión, ejecutar consultas, desconexion…).
Instanciamos el objeto para la gestión de la base de datos al principio de las páginas que necesitan conexión con la misma (es decir realizamos la conexión con la bbdd), y al final de la página cerramos la conexión de la misma.

Hay en ocasiones que un proyecto trabaja con más de una base de datos, por lo que será necesario hacer conexiones a esas bases de datos para la manipulación de la información. Pues bien, en las páginas que se necesite manipular información de las distintas bases de datos, instanciamos tantos objetos como base de datos se necesiten, y al final de la página cerramos todas las conexiones.

Yo pensaba que al tener objetos distintos para cada conexón sólo tenía que usar el objeto correspondiente para hacer las peticiones.
Pero no, es necesario que cada vez que se vaya a usar una base de datos distinta a la que estabas manipulando deberás actualizar la base de datos (@mysql_select_db). Yo lo hago mediante un método de la clase.

Seguir leyendo…

#013 Flash [Q] Tips: swfobject y respeta los estándares con flash

Este tip es un poco doble, en realidad el objetivo principal es el de lograr crear código para un objeto flash que valide correctamente los estándares correspondientes, y de paso hablaros de un imprescindible en todos aquellos que trabajamos con flash como es swfobject.

La manera “tradicional” de generar un HTML con un flash incrustado, y que incluso es la que se mantiene en la versión CS4 de la suite de adobe es la siguiente:

Seguir leyendo…

#012 ActionScript [Q] Tips: precargas AS3 en Internet Explorer

Imagino que unos cuantos de vosotros habéis topado previamente con el bug que se da en Internet Explorer cuando hacemos una precarga empleando los eventos Event.COMPLETE y ProgressEvent.PROGRESS de AS3. El bug en cuestión aparece cuando tenemos una película cacheada y volvemos a ella, para reproducirlo solamente tenéis que cargar la película y una vez cargada, pulsar F5 en vuestro navegador IE, o Ctrl + F5. Cabe destacar que esto solo ocurre con la película principal, y no las que se cargan internamente en ella.

Veréis como la precarga se queda en pantalla por los siglos de los siglos, y es que no se disparan correctamente los eventos antes citados. La solución más simple para el problema, es controlar este hecho, y qué mejor manera que viendo antes de preparar los eventos, si resulta que ya tenemos cargada por completo la película.

Seguir leyendo…

#011 ActionScript [Q] Tips: controla tus eventos

Todos los que tenemos más fresco AS2 (en mi caso por Flash Lite) tenemos que esforzarnos para mantener los eventos controlados en AS3. En AS2 cuando eliminabas un elemento del escenario, o de un clip, dejaba de responder a los eventos a los que estaba suscrito, y en AS3 esto no es así. Una buena manera de poder llevar un control del estilo de AS2 (que cuando borremos un elemento de la DisplayList deje de escuchar eventos, y de que los recupere cuando deseamos es encerrar estas llamadas, las de addEventListener y removeEventListener en dos métodos y suscribir éstos a los eventos ADDED y REMOVED).

Seguir leyendo…

#010 ActionScript [Q] Tips: recorte irregular de bitmaps con suavizado

Este tip es en realidad una presentación del método copyChannel de la clase BitmapData, pero al menos lo presentamos con una utilidad práctica. Imagina que te piden recortar dinámicamente unas zonas de una imagen pero con formas complejas, e incluso con suavizado en el corte…

Se nos puede ocurrir nada más plantearlo si la forma es regular, emplear una fórmula para saber si un punto se encuentra dentro o fuera (y quedarnos solamente con los interiores), pero y si la forma no es regular? y si el corte no ha de ser brusco, sino con un equivalente al “feather” de photoshop?

Seguir leyendo…

#009 ActionScript [Q] Tips: controla tu foco en AS3

Ya sábado y sin poner el tip correspondiente… una semana complicada creedme…

En AS2 disponíamos de la clase Selection con sus métodos getFocus y setFocus que nos permitían controlar el cambio de Foco o elegir a quién queríamos dárselo, en AS3 se simplifica el proceso con la propiedad focus de stage (aplicable sobre cualquier InteractiveObject), y por otro lado tenemos la clase FocusManager para todos los componentes que implementan la IFocusManagerComponent.

Si lo que queremos es simplemente respetar un orden, podemos trabajar sobre los tabIndex de los elementos en pantalla (sean elementos normales o componentes, y que se mantiene desde AS2), de tal manera que empezando en 1 y dando sucesivos valores, tengamos el orden deseado. Con esto controlamos la transición de uno a otro mediante tabulador.

Seguir leyendo…

#008 ActionScript [Q] Tips: sincronizar FPS

En el útlimo proyecto en el que nos hemos visto embarcados, hemos sufrido muy de cerca 2 características de flash que no son especialmente agradables: no te puedes fiar de los FPS para darle velocidad a un movieclip, y no te puedes fiar de un intervalo, Timer, o como lo quieras llamar para darle velocidad a un clip.

La física ayuda, si un coche va a 40Km/h de forma constante, y avanza recto durante 1 hora, sabes que estará 40 kilómetros desde el punto de medición. Pero en flash lo normal no es actuar así, sino que en un ENTER_FRAME o en un intervalo, le vamos incrementando la posición.
Seguir leyendo…