Archivo de la categoría ‘Flash’

qrcode link
12 de diciembre de 2008

Tipos Enumerados en AS3(II)

Siguiendo con el artículo Tipos Enumerados en AS3, vamos a dar una solución correcta al problema de la herencia desde nuestra nueva clase Enum.

Como vimos, es necesario bloquear la creación de las clases mediante un bloque estático después de que se definan las constantes de nuestro enumerado. Dado que el bloqueo se realiza desde el constructor de Enum hay que utilizar un sistema que nos permita bloquear selectivamente las clases hijas según su tipo. Para esto podemos utilizar una lista, en la que iremos agregando los tipos de clases bloqueadas, y en el constructor de Enum verificamos su existencia. Así Enum tendría el siguiente código:

(más…)

qrcode link
19 de noviembre de 2008

Tipos Enumerados en AS3 (I)

En este pequeño artículo vamos a describir un método para la emulación de tipos enumerados (“enums“) en AS3. Los tipos enumerados son de uso habitual en Java, C++ o C#. Básicamente son un tipo de dato, muchas veces definido por el programador, compuesto por una serie de constantes llamadas enumerados. Para ampliar información, se puede consultar el artículo de Wikipedia sobre los tipos enumerados (en inglés).

(más…)

qrcode link
5 de octubre de 2008

Briconsejo: Array cast en AS2

AS2 no permite hacer cast a un objeto Array.  Así de simple y doloroso. Esto se debe a que, por compatibilidad hacia atrás con AS1, Adobe ha mantenido que Array también sea una función contructora de matrices, y que tiene preferencia sobre los casting.

De esta manera, al hacer Array(Objeto) lo que hacemos es contruir un Array de un solo elemento, ese Objeto, el cuál bien puede ser una matriz que nos hemos traido de vete a saber donde, y a la que tenemos que hacer un casting para usarla en vete a saber qué. Pues así no se puede.

Ejemplo:

(más…)

qrcode link
31 de marzo de 2008

Soitu.es libera el widget de las elecciones

Soitu.es ha liberado el código del widget hecho en flash con el que mostraban los datos de los resultados electorales de 2008.

Me parece genial que lo hayan hecho. Así, los que tengan tiempo podrán pasarlo a OOP , cosa que no creo que sea difícil. El código en sí me ha defraudado por su calidad. Aunque funciona bien, el hecho de hacer referencias a _root ,y el no utilizar OOP limita su uso, hace inviable su inclusión en otros proyectos de una manera directa.
Ha sido publicado con licencia GPL3. Lo que permite utilizarlo con bastante libertad.

Artículo en soitu.es

qrcode link
20 de marzo de 2008

Usando Actionscript 3

Llevo unos días probando AS3 con Flex SDK y Flash CS3. Ya iba siendo hora. He aprovechado las vacaciones para echarle un vistazo y después de unos días de uso encuentro importantes mejoras con respecto a AS2:

  • La principal y más importante es la posibilidad de crear instancias de MovieClip (y derivados) en tiempo de ejecución sin tener que hacer malabarismos.
  • Usa espacios de nombres (packages) para las clases.
  • Está disponible un compilador externo, de manera que no hay que depender más de herramientas de terceros para generar nuestros SWF.
  • Ya no es necesario esperar al evento “load” para acceder a las propiedades de una clase asociada a un MovieClip de la biblioteca.
  • Incluye la clase Event de forma nativa.

Es lógico creer que AS3 permita cierta flexibilidad, ya que va a ser utilizado por diseñadores con pocos conocimientos de programación. Sin embargo creo que es mucho más sano el trabajo de cualquiera, aunque sea mínimo y casual, si se hace con un lenguaje bien estructurado, y con una lógica bien definida. Se están ganado puntos para el futuro.

He aquí una lista de los problemas principales a nivel estructural del lenguaje. Según mi parecer, claro:

  • AS3 no tiene clases abstractas, ni métodos abstractos o virtuales.
  • AS3 no ofrece herencia de los miembros estáticos.
  • AS3 sigue teniendo tipado débil. Permite acceder a propiedades”fantasmas” de los objetos “Object”
  • AS3 no admite sobrecargas de métodos. Esto es especialmente ruinoso, porque hay que hacer uso de constructores que acepten “Object” como parámetros, o peor aún, el tipo “*”. Se puede también hacer uso de los valores por defecto de los parámetros, aunque es muy limitado.
  • AS3 a veces asigna por referencia y otras por copia. No queda muy claro cuándo usa qué.
  • AS3 no soporta constructores privados o protegidos. Adiós, Singleton, Adiós.

Por otro lado tenemos pequeños detalles o bugs. No son problemas estructurales, sino de cómo se han creado las clases que forman las bibliotecas de Flash o de fallos del reproductor:

  • Para acceder a los eventos de un objeto Loader, hay que “escuchar” los eventos de un atributo suyo (contentLoaderInfo), a persar de que Loader hereda de EventDispatcher.
  • Los delegados han sido eliminados, y han ampliado el funcionamiento de los eventos, enterrando la posibilidad de pasar delegados como parámetros de funciones, y pasar parámetros a los delegados. (Suena raro, pero es así)
  • Hay un bug en la propiedad filters de un MovieClip. Al crearse el MovieClip es un array vacío, que debería permitir agregar nuevos filtros con “push”, sin embargo no lo permite. Debe asignarse a una nueva matriz para que funcione correctamente
  • Para dibujar algo sobre en Sprite tienes que acceder a una propiedad “graphics”, que en realidad no es otra cosa que una biblioteca de funciones para poder dibujar. Quizá hubiera sido mejor integrar esos métodos en la clase Sprite, y/o hacerlos estáticos.

PD: La lista irá creciendo según vaya encontrando bondades y defectos.

  • qrcode link