Actionscript3.0, Flash

abril 2011

Como depurar errores de Actionscript, ParteI

Muchas de las preguntas que aparecen en los foros de Actionscript son por errores en el código que podrían responderse siguiendo algunos pasos a la hora de depurar.

Lo primero es tener en cuenta donde se ha producido el error, para ver de que manera podemos depurarlo:

1. El error se produce al compilar

Cuando publicamos o probamos la película saltan uno o varios errores en la ventana “Errores de compilador” de Flash. Algo parecido a esto:

Flash Error

Para arreglarlo, evidentemente tenemos que ir a la linea indicada en la ventana de errores y arreglar el error en cuestión. Dependiendo del error, puede ser mas fácil o mas dificil solucionarlo, veremos como afrontar estos errores en la siguiente parte de este post.

2. El error se produce en tiempo de ejecución

Este tipo de errores pueden ser mas difíciles de depurar.

-Si estamos probando desde el IDE (desde Flash), al producirse uno de estos errores saltará un error de este tipo en el panel de “Salida”.

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at index_fla::MainTimeline/imprimir()

En la descripción encontramos en que clase y en que método está localizado el error, por lo que deberemos acceder a la fuente para solucionarlo.

-Si el error se produce probando en el navegador, podemos utilizar el FlashPlayer Debugger para depurar el error. A veces, probamos una aplicación en el Flash IDE y al subirlo y probar en el navegador algo falla o no funciona como esperábamos. Si tenemos instalado en el navegador el Flash Player “normal”, los errores que se produzcan en las películas que veamos con ese navegador se producirán “en silencio”. Normalmente la película dejará de funcionar, pero no saltarán avisos de error ni alertas. Para solucionar esto, podemos instalar la versión “debugger” para nuestro navegador (podéis encontrarla aquí).

Con esta versión instalada, cada vez que se produzca un error en un película, saltará una ventana de error en el navegador con información sobre su procedencia:

Flash Error Debugger

-Dentro del los errores que se producen en el navegador, está esta pregunta clásica:

Tengo una galería de fotos que funciona bien en mi ordenador, pero al subirla deja de funcionar, que está pasando¿?

En el 90% de los casos, pasa una de estas dos cosas:

-Es un error de rutas: Flash no está encontrando las fotos porque la estructura que tenemos en el servidor no es la misma que tenemos en local. Para ver que está buscando Flash en el servidor, pordemos utilizar algún proxy de depuración Por ejemplo, el Fiddler (gratis y para PC). Este programa nos dirá todas las peticiones que está haciendo nuestro navegador, y si alguna de ellas ha fallado. También es muy útil cuando enviamos o recibimos variables al servidor (a un archivo php, asp, etc), ya que podemos saber que está mandando Flash y que está devolviendo el servidor.

-Es un error de seguridad SandBox: este error ocurre cuando intentamos cargar un archivo de un servidor distinto al nuestro. Si ocurre esto y tenemos instalado Flash Player Debugger saltará un error en el navegador de este tipo:

securityError no controlado: text=Error #2048: Violación de la seguridad Sandbox

Para solucionarlo podemos mover los archivos a nuestro servidor o poner un archivo crossdomain en el servidor del que vamos a cargar los archivos.

En la segunda parte del post entraremos mas en detalle en cada uno de los tipos de error.