Archive for January, 2005

5 razones al azar para usar el SEPY actionscript editor

Wednesday, January 26th, 2005

No se qué editor usas para tu actionscript. Tampoco he probado muchos, pero uso el SEPY y me encanta. Ahí van algunas razones:

  1. Explorador de funciones:
  2. captura de pantalla del explorador de funciones del SEPY

    Cuando tengo abierto un archivo .as tengo todas las funciones que contiene a un click de ratón, evitándome el scroll en ficheros largos.

  3. Lector de XML
  4. captura de pantalla del lector de xml del SEPY

    Si tengo que trabajar con archivos XML, basta con abrirlos en el lector, seleccionar el nodo al que quiero referirme en el código y copiar su referencia en flamante actionscript.

  5. Codefolding:
  6. captura de pantalla del code folding en el SEPY

    La habilidad de plegar y desplegar funciones me permite centrarme en la que estoy programando en un momento concreto, evitándome el ruido visual que produce la sopa de variables que suelo tener en el código.

  7. Busqueda en multiples ficheros:
  8. captura de pantalla de la búsqueda múltiple en el SEPY

    A veces perdemos la pista de alguna función o variable y puede ser muy tedioso ir buscándola fichero por fichero. Con la búsqueda múltiple del SEPY tenemos todas sus ocurrencias en los ficheros que seleccionemos.

  9. Lanzar el swf desde el SEPY:
  10. …Y una de mis favoritas. No tenemos que irnos al flash para publicar el swf cada vez que hacemos un cambio en el código. Si lo tenemos abierto en el fondo, con sólo hacer Ctrl + Enter desde el propio SEPY se publica la película

tags:No tags

Pasar funcion como parametro

Thursday, January 20th, 2005

El otro día estaba intentando hacer una función en actionscript que me llamara a otra función después de una pausa aleatoria. Dado que pensaba utilizarla para varias cosas distintas dentro del mismo programa, la llamada a la segunda función debía ser un parámetro, al estilo de setInterval (no utilicé éste por diversas razones). La llamada a la función sería tal que así:


pausaAleatoria(funcionLlamada, valorMin, valorMax);

Entonces me topé con un problema que me ha surgido muchas veces y hasta ahora no había podido resolver: ¿Cómo ejecuto la función cuyo nombre he pasado como parámetro dentro de la otra? Dado que es lo que hace precisamente setInterval, resulta lógico que sea posible hacerlo…

La manera más obvia de hacerlo me parecía pasarle el nombre de la función como string y hacer varios tipos de eval (eval("funcionLlamada" + ()), eval ("funcionLlamada()") así que probé muchas cosas en esta línea, pero nada funcionaba. Varias búsquedas por la web también resultaron infructuosas.

Ahora que por fin me han dado la solución (gracias, natalia) resulta, como casi todo una vez q lo sabes, ridículamente sencillo. No hay que hacer ningún eval ni prestidigitación de ningún tipo. Un ejemplo:


// esta es una función cualquiera
function a () {
  trace ("soy la funcion a");
}
// y desde otra función vamos a llamar a la primera
function b (funcionLlamada) {
  trace ("soy la funcion b");
  funcionLlamada();
}
// y lo ejecutamos tal que así.
b(a);
// en la ventana de trace aparecerá
// soy la funcion b
// soy la funcion a

La clave (que yo no alcanzaba a ver) está en que los paréntesis que ponemos después de una función son un operador y no un simbolo arbitrario. Igual que el signo + entre dos valores significa “suma esto”, el operador () significa “ejecuta esto”

Quizás este problema solo lo haya tenido yo por mi idiosincrática manera de programar, pero aquí lo dejo como referencia para mi y todo el que lo quiera. Seguro que alguna vez a alguien le sirve.

Nota: El tema de pasarle parámetros es igual de facil si conocemos a priori el número de parámetros que queremos pasarle. Basta con ponerlos dentro del operador (); pero dado que lo que quería era una función genérica, esto no me sirve . Si consigo (o alguien me cuenta) la solución para pasarle un número indeterminado de parámetros, también la pongo por aquí, no sea que se me vuelva a olvidar. Buenas tardes.

tags:No tags