Algunas cosas básicas de Flash/AS3 que me están costando memorizar las puedes encontrar aquí, voy a utilizar esta entrada a modo de cuaderno de notas para recordar las cosas.
Cuaderno de Notas de AS3
Yo al igual que todo el mundo (incluido mi discípulo dios) usamos un cuaderno para apuntar las cosas cuando comenzamos el estudio de un nuevo lenguaje. Suelo anotar todas esas cosillas que hay que guardar porque no hay forma de retenerlas en la cabeza hasta que se coge soltura escribiendo, y claro, hasta que llega ese momento es bueno tenerlo en algún sitio de fácil accceso.
¿Y como ha acabado todo esto aquí?, sencillo, he pensado que igual a ti te interesa algo, así que.: ¡¡Comencemos!!
¡Me olvidaba!, si quieres comentarme algo utiliza el enlace que hay al final del artículo para que todos los que vengan detrás de ti puedan leerlo también.Aclaraciones sobre AS3 y AS2
AS3 (Actioscript 3) es muy diferente de AS2, así que esto sólo te valdrá para AS3 y para aclararte alguna dudilla si piensas migrar, si es tu caso, ¡suerte!.
La opinión de un programador sobre AS3
Al enfrentarme a AS3 he sentido lástima por los desarrolladores o diseñadores de Flash, la nueva versión intenta ser más organizada, más estructurada, sacar provecho de un lenguaje como pueda ser C++ o Java conviertiendo ActionScript en un lenguaje muy parecido.
El resultado, lejos de ser lo esperado ha sido nefasto. Digamos que todo lo bueno de un lenguaje como Java NO lo ha recibido AS3, la claridad de Java consiste en que allá donde veas una variable declarada sabes lo que exáctamente contine, si es una cadena no puede contener una matriz, si es un objeto no será un número, etc. Cosas que en los lenguajes de alto nivel son el pan de cada día en ActioScript es fantasear.
Si dudas sobre lo que te digo, prueba a pasarle un Array a una función que espere un String, no me discutas, lo mínimo que debería decir Flash es que hay una conversión de tipos, no dejarte meter la pata y dejarte con unas herramientas de depuración realmente precarias.
En fin, si pasas de un lenguaje AS2 a AS3 es por algo bueno, no porque en vez de escribir 3 líneas te apetezca escribir once líneas, mira el segundo ejemplo (más abajo), en AS2 sería tres líneas, en AS3 11.
Esperemos que la próxima versión de Flash mejore, porque CS3 ha sido nefasto, CS4 está mejor, por lo menos hay menos errores desconocidos, pero sigue faltando un poco de seriedad en el desarrollo por parte de Adobe.
Paquete básico para la clase principal (Main)
Creas el proyecto (Flash/AS3) lo guardas y en las propiedades del documento, en el campo "Document class" pones Main.
Ahora creas un nuevo ActioScript y lo guardas en el mismo directorio con el nombre Main.as, la clase que deberá contener es:
package { import flash.display.MovieClip;
public class Main extends MovieClip { public function Main() { }
}
}
Instanciar un MovieClip que has diseñado anteriormente
Primero debes asegurarte de que le has puesto un nombre de clase para ActionScript, comprueba sus propiedades y asegurate de que su nombre y su clase coinciden, además deberás tener activadas las casillas
"Export for ActionScript" e
"Export in first frame".Imaginemos que se llama mc_obra y lo creamos en la función Main (mira el capítulo anterior).
package { import flash.display.MovieClip;
public class Main extends MovieClip {
private var nuevo:mc_obra;
public function Main() { obj = new mc_obra();
obj.y = 10; obj.x = 10;
addChild(obj);
}
}
}
Cambiar el cursor por un MovieClip personalizado
Dibuja un MovieClip con forma de cursor, mano o bombilla (lo que quieras) y ponle el nombre de clase para la exportación a ActionScript de
"mc_cursor", si tienesa alguna duda lee la sección anterior.
Ahora escribiremos el código realizando primero dos tareas:
- Ocultamos el cursor del ratón real
- Creamos nuestro cursor y lo ponemos en el centro
- Capturamos los eventos de movimiento de raton
- Preparamos una función para recibir los eventos que se encargará de cambiar la posición de nuestro cursor MovieClip.
package {
import flash.ui.Mouse;
import flash.events.MouseEvent;
import flash.display.MovieClip;
public class Main extends MovieClip {
private var raton:mc_cursor;
public function Main() { Mouse.hide()
raton = new mc_cursor();
raton.y = 250; raton.x = 250;
addChild(raton);
// IMPORTANTE, utilizamos stage, que es el contenedor principal pues queremos recibir
// todos los movimientos del raton y no solo los que pasen por los MovieClips.
stage.addEventListener("mouseMove", mouseMoveHandler);
}
private function mouseMoveHandler(evento:MouseEvent) { raton.x = mouseX;
raton.y = mouseY;
}
}
}