Archive for the 'Actionscript' Category

actionscript 3 syntax highlighting for jEdit

Tuesday, August 28th, 2007

Still happily living on jEdit for most of my scripting. I haven’t found an actionscript 3 edit mode, so I’ve made one. It is based on the original actionscript.xml and the Flash CS3 AsColorSyntax_3.xml file so it should have everything you can see colored on the IDE.

This edit mode doesn’t have any as2 specific keywords, so if you have to work on as2 don’t delete the original. Otherwise, you can just replace your original actionscript.xml file (you’ll find it problably in “c:\program files\jEdit\modes” if you’re on win xp) with this one. Make a backup of the original, just in case.

Grab the actionscript 3 edit mode for jEdit

tags:

Processing en flash… mas o menos: Brevity.

Friday, June 9th, 2006

Agradable sorpresa del siempre agradablemente sorprendente keith peters:

Brevity:

Brevity is a new language, based around ActionScript 3.0. It provides a very simple syntax to create ActionScript 3 based SWFs. Think “Processing for Flash”. In fact, Brevity is very much inspired by Processing

El concepto es exacto al de processing: Conforme el actionscript 3.0 se va conviertiendo en un lenguaje de programadores de verdad, se vuelve más difícil de aprender para los que no tienen ninguna idea, así que brevity pretende devolver al flash una sintaxis simple para aprender o hacer prototipos o experimentos rápidos.

Otro proyecto interesante de pedagogía y programación (y van…). Veamos como se desarrolla.

Más info.

Via brendandawes, quien también nos prepara una sorpresa pronto.

tags:No tags

reloj pie chart

Saturday, July 9th, 2005

Hace unos días, para practicar un poco de OOP y as2, se me ocurrió crear una clase que me permitiera hacer pie charts (esto es, gráficas redondas, de esas que parecen un pastel). Una vez terminada, para probarla, pensé en cómo quedaría hacer un reloj con este tipo de representación gráfica.

Exacto, bastante feo.

Pero he pensado que igual le servía a alguien el código. Así que, aquí lo tienen para descargar. El código está más o menos comentado, y hay otro ejemplo de uso de la clase Pie ;creo que no es difícil entenderlo. Si alguien tiene una duda, sugerencia, o (y esto lo agradecería mucho) corrección sobre mis bad OOPractices, ya saben donde estoy.

Por cierto, que aprovecho para recomendar el excelente plugin kimili flash embed, que me ha permitido insertar el swf tras un proceso de instalación de… 10 segundos

tags:No tags

Pasar funcion como parametro. 2: Multiples parametros.

Tuesday, June 7th, 2005

En una entrada anterior comentaba cómo pasar el nombre de una función a otra como parámetro. Sin embargo, no sabía cómo pasarle un número indeterminado de parámetros a la función llamada. Tras varios intentos fallidos, lo dejé en el tintero. Hoy, buscando otra cosa, he encontrado lo que me quedaba para solucionarlo en otro blog. Me explico:

Cada vez que llamamos una función, de forma predefinida se crea dentro de esta un array de nombre arguments, que almacena todos los parámetros pasados.


function a(param1, param2, param3) {
  trace(arguments);
}
a ("pepe", "juan", "jorge");
// la ventana de salida muestra : pepe, juan, jorge
// * ya lo se, qué parametros mas aburridos *

Dado que arguments es un array, podemos hacer todas las operaciones de esta clase con ella. Por ejemplo:


function a(param1, param2, param3) {
  trace(arguments.length);
}
a ("pepe", "juan", "jorge");
// la ventana de salida muestra : 3

La idea era pasar el array de parámetros de una funcion a la segunda, pero ahí me quedé. No había manera de concatenar los parámetros para pasarlos a la función de dentro. Pero… hoy me he encontrado con esto:

Using an array as a list of arguments

Tenía toda la pinta de ser lo que andaba buscando. Y en efecto:

Si utilizo el método function.apply() puedo pasar un array como lista de argumentos.


// array de parametros
d_arr = ["un", "dos"]

function c (arg1, arg2) {
	trace ( arg1+ ", "+arg2);
}
// uso el método function.apply() pasándole el nombre de la matriz
// como parámetro. *el otro parámetro no nos sirve aquí, por eso paso null.
c.apply(null, d_arr);

Juntando todo esto, pues, tenemos la solución definitiva para pasar cualquier función (tenga parámetros o no) como parámetro de otra:


// función genérica que llamará a cualquier función con cualquier número de parámetros
function a(func, args) {
	// eliminamos el primer elemento del array arguments.
	newArguments = arguments.splice(1, arguments.length);
	// y llamamos a la función desde dentro con function.apply()
	// pasándole el nuevo array arguments como parámetro.
	func.apply(null, newArguments);
}
// función cualquiera, sosa.
function b(arg1, arg2, arg3) {
	// trace de los de toda la vida con 3 parámetros
	trace("Vaya post "+arg1+" "+arg2+" "+arg3);
}
// llamada
a(b, "más", "mal", "explicado.");
// la ventana de salida mostrará "Vaya post más mal explicado"

Y eso es todo. Así no se me olvida.

tags:No tags

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

xebius 2.0

Friday, November 26th, 2004

ilustracion del sitio xebius.comManuel Camino ha lanzado por fin esta semana la versión 2.0 (beta) de su sitio xebius.

Con unas habilidades de ilustración, modelado, animación y concepción artística fuera de lo común y una atención al detalle exquisita, ha sido (es) un placer echarle una mano con el código (algunos movimientos, randoms aquí y allá…). Hay más en el horno y saldrá pronto.

tags:No tags