Oct 20

Cuando el compilador de FlexBuilder nos lanza un error en tiempo de ejecución, automáticamente veremos una pila de lineas relacionadas con dicho error. Digamos que tenemos la siguiente estructura de objetos:

Clase Main alberga > clase Menú que alberga > clase Boton

Si uno de los botones genera un error, FlexBuilder nos dirá que en la línea x de la clase Botón hay un error, y seguidamente, nos mostrará el “camino” que ha seguido la aplicación para llegar a dicho error. En este caso el camino sería algo así (pseudo error imaginario claro):

Se ha intentado acceder a un objeto nulo: clase Boton, linea 27
[....] Menu, linea 69
[....] Main, linea 10

Pues bién, esta forma de mostrar los errores no es una característica de Flex Builder. En realidad es un método de la clase “Error” de ActionScript 3. Concretamente el método “getStackTrace()“.

¿Que para qué me sirve saber esto?
Pues resulta que si compilas con Eclipse FDT (por ejemplo), desgraciadamente los errores no vienen seguidos de su stack trace, y es mucho más dificil captarlos, o saber de dónde vienen.

Todavía no he descubierto la manera de que esto sea automático, pero en su lugar hago mucho uso de las sentencias try-catch, con las que podemos simular lo que os contaba:

try
{
    trace("Esto podría generar un error:", objeto.HacerAlgo());
 
}catch(e:Error)
{
    trace(e.getStackTrace()); // esto nos lanza todo el stack trace si se produce un error
}

Espero que os sirva si trabajáis con FDT, y si por casualidad alguien sabe cómo hacer que esto salga por defecto como en Flex Builder, soy todo orejas. Yo he preguntado en el foro de FDT, pero nadie me conesta =(

Oct 20

Solo un apunte rápido. De toda mi experiencia de AS3 hasta la fecha, me acabo de dar cuenta (mira qué luces tengo!), de que la mayoría de errores “en tiempo de ejecución” (sí, eso que pasa después de compilar =), son por la misma causa. Porque estoy intentando manejar un objeto que no existe, ya sea llamándolo directamente, lo cuál es más facil de detectar, o llamándo a un método o propiedad de dicho objeto.

El error típico suele ser:
“TypeError [n]: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo”.

Si compilas con flex builder te dirá exactamente la línea del error. Pero lo que hago casi siempre para solucionarlo es una traza de cada una de las propiedades del objeto. Para ello tengo un método estático en una clase típica de útiles, de esta manera:

public static function TraceProps(o:*):void
{
	for ( var i:* in o)
	{
		trace(">", i, ":", o[i]);
	}
}

Así veremos el nombre y valor de cada propiedad del objeto, y podremos detectar más fácilmente nuestro error.

Oct 10

Hace siglos que no escribimos nada en el blog, y no es por falta de ganas, sino por carga de trabajo “excesiva” últimamente. De momento os quiero dejar un enlace a una web que me parece brutal. Es lo más creativo y novedoso que he visto en mucho, mucho tiempo. Casi siempre vemos los mismos patrones en todas las “piezas creativas”, con algún que otro detallito nuevo. Pero esto, según mi opinión, rompe el molde. Una composición de video panorámico, que simula 3D. Es decir, podemos interactuar dentro del video con movimientos de ratón ! Serás el protagonista de una historia de terror muy realista. Sustos asegurados. Y una sorpresita muy maja al final de la historia…

Ala, a disfrutarlo:
http://hotel626.com/

Por cierto, no fui capaz de averiguar los números para salir de la habitación del psicópata, me mató como 5 veces hasta que abandoné…