August 28th, 2007 § § permalink
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
June 9th, 2006 § § permalink
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.
July 9th, 2005 § § permalink
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
June 7th, 2005 § § permalink
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.
January 26th, 2005 § § permalink
No se qué editor usas para tu actionscript. Tampoco he probado muchos, pero uso el SEPY y me encanta. Ahí van algunas razones:
- Explorador de funciones:

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.
- Lector de XML

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.
- Codefolding:

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.
- Busqueda en multiples ficheros:

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.
- Lanzar el swf desde el SEPY:
…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
January 20th, 2005 § § permalink
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.
November 26th, 2004 § § permalink
Manuel 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.