ActionScript se introdujo en Flash 4 y se desarrolló en una herramienta potente y muy útil con Flash 5 y aún más con ActionScript 2.0 en Flash MX 2004 y Flash 8 que se adherían con más fidelidad a los estándares ECMAScript. No solo es responsable de controlar reproducción básica y comportamientos activados por el usuario, también permite que Flash se integre con JavaScript, XML, servicios Web y otra tecnología de servidor. Si se quiere programar en Flash, hay que aprender ActionScript 2.0. Una visión general se puede encontrar en www.macromedia.com/devnet/flash/actionscript/actionscript.html.
El lenguaje ActionScript es un lenguaje de programación completo de creación de scripts, al estilo de otros como JavaScript, aunque con bastantes diferencias respecto a este.
Mediante este lenguaje se pueden realizar acciones sencillas sin necesidad de ser un experto en programación.
ActionScript 1.0 aparece por primera vez con Flash 5. Flash 5 se convirtio en un lenguaje orientado a objetos. Las versiones anteriores de Flash no utilizaban esta filosofía, así que en la lista de comandos de Flash podemos encontar con frecuencia dos formas distintas para realizar una acción.
Por ejemplo, para generar un número aleatorio entre 0 y 50, antes se utilizaba la siguiente acción:
random (50);
Ahora, con Flash 5, la forma correcta es hacerlo llamando al método random del objeto Math, que genera un número entre 0,0 y 1,0. Sería así:
Math.random()*50;
Se recomienda utilizar siempre la nueva sintaxis orientada a objetos. Las acciones antiguas se pueden seguir utilizando, pero la forma correcta seríala segunda.
POO (Programación orientada a objetos).
Flash 5 incorporó la posibilidad de crear scripts siguiendo una filosofía de programación muy popular en estos útlimos años, la programación orientada a objetos.
Esta programación se basa en la creación de unos elementos llamados clases, que se componen de una serie de propiedades y métodos. Por ejemplo, imaginemos que creamos una clase llamada Coche. Esta clase tendría una serie de propiedades y métodos.
Las propiedades son las características propias de la clase. En la clase Coche, las propiedades podrían indicar su color, tamaño, velocidad.
Los métodos son las acciones propias de la clase. Por ejemplo, podríamos crear un método sobre nuestro coche que hiciese moverse, aparcar, etc.
Cuando tenemos definidad una clase completa, podemos crear distintas instancias de esa clase. Estas instancias se conocen con el nombre de objetos.
Así, podríamos tener un objeto llamado coche azul, que tendría una serie de valores para sus propiedades, como color azul, tamaño. Si quisiésemos que ese coche se moviese utilizaríamos el método Mover que habíamos creado. De esta forma, podemos crear tantos objetos coche como necesitemos, aplicándole a cada uno de ellos una serie de características. Todos provendrán de la misma raíz, que es la clase coche.
Este sistema de creación de objetos es similar al utilizado por Flash para crear clips de película y botones, que creamos como símbolos a partir de los cuales definimos instancias a las que le podemos cambiar sus características o aplicar acciones.
Para referirnos a las propiedades y métodos de un objeto utilizamos su nombre seguido de la propiedad o método adecuado.
Coche1.Color="Verde";
Visión general de las distintas funciones de ActionScript. Versión 1.0 y 2.0.
ActionScript 1.0
ActionScript arrancó con comandos sencillos para controlar la línea de tiempo como play y stop. Además podía controlar las líneas de tiempo de objetos dentro del entorno Flash, llamados Movie Clips, y controlar su ubicación x e y, su anchura (width) y altura (height). También podía ajustar y extraer variables, utilizar bucles y comunicarse con bases de datos utilizando PHP, ASP, ColdFusion, etc.; prácticamente todo lo que se necesita para explorar Flash. Los desarrolladores pronto añadieron código para crear hélices de ADN, animaciones complejas, juegos y aplicaciones Web como carros de compra y galerías multimedia.
ActionScript 1.0, con la publicación de Flash MX, evolucionó para incluir varios objetos más y métodos disponibles y permitía programación orientada a los objetos, pero estaba limitado por su implementación de clases. No transcurrió mucho hasta la publicación de ActionScript 2.0 con la siguiente versión de Flash, Flash MX 2004, aunque ActionScript siguió proporcionando una programación sencilla para los no programadores. En Flash 8 se volvió a incluir un asistente de scripts que ayuda a los no programadores, que estaba en las versiones anteriores de Flash pero fue omitido en la versión Flash MX 2004.
ActionScript 2.0
ActionScript 2.0 vio la luz con Flash MX 2004 para resolver algunas deficiencias con las estructuras de clases. Gran parte del lenguaje todavía refleja la sintaxis de ActionScript 1.0, pero para los usuarios más avanzados hay algunas diferencias.
La estructura de clases de ActionScript 2.0 soporta ahora miembros de clase públicos, privados y estáticos, así como herencia e interfaces. ActionScript 2.0 también permite tipado fuerte y retorno de función.
Más información sobre las nuevas funciones de ActionScript 2.0 consulte www.flash-mx.com/flash/actionscript_loft.cfm.
Macromedia/Adobe también mantiene un diccionario Action Script con un listado de todos los objetos disponibles y sus métodos, incluyendo algunos ejemplos de código en www.macromedia.com/support/flash/action_scripts/actionscript_dictionary/.
ActionScript 1.0 en Flash 5
Objetos predefinidos de Flash
Se pueden utilizar los objetos predefinidos que incorpora Flash. Son unas clase que tienen creadas una serie de métodos y propiedades.
Objeto MovieClip (Clip de Película): encargado de manipular los clips de película. Cada vez que creamos un clip de película tendremos disponibles varios métodos y propiedades para ese clip.
Objeto Mouse (Ratón): define algunos métodos para el ratón.
Objeto Sound (Sonido): contiene varios métodos que te permiten modificar el volumen del sonido, detenerlo, etc.
Objeto Math (matemático): con propiedades y métodos para realizar cálculos matemáticos.
Objeto Date (fecha): este objeto contiene la fecha actual y funciones para realizar mediciones de tiempo en tus películas.
Objeto String (cadenas de texto): te permiten manipular textos.
ActionScrip 1.0 en Flash MX
* En Flash MX apareció el método Objetc.registerClass(). Este método sólo funciona con Flash Player 6 (Flash MX) y versiones posteriores. No emplee este método si vas a utilizar Flash Player 5.
Para definir una clase, se debe crear una función especial denominada función constructora. Las clases incorporadas tienen funciones constructoras incorporadas.
Creación de un objeto personalizado en ActionScript 1.0
Para crear un objeto personalizado, debe definir una función constructora. A una función constructora siempre se le asigna el mismo nombre que al tipo de objeto que crea.
Puede utilizar la palabra clave this en el cuerpo de la función constructora para hacer referencia al objeto que crea el constructor; al llamar a una función constructora, Flash pasa la palabra clave this a la función como parámetro oculto. La función constructora que se muestra en el siguiente ejemplo crea un círculo con la propiedad radius:
function Circle (radius) {
this.radius = radius;
}
Tras definir la función constructora, debe crear una instancia del objeto. Anteponga el operador new al nombre de la función constructora y asigne un nombre de variable a la nueva instancia. En el código siguiente, por ejemplo, se utiliza el operador new para crear un objeto Circle con un radio de 5 y se asigna a la variable myCircle:
myCircle = new Circle(5);
Un objeto tiene el mismo ámbito que la variable a la que se ha asignado.
Asignación de métodos a un objeto personalizado en ActionScript 1.0
function Circle(radius) {
this.radius = radius;
this.getArea = function(){
return Math.PI * this.radius * this.radius;
};
this.getDiameter = function(){
return 2 * this.radius;
};
}
var myCircle = new Circle(55);
trace(myCircle.getArea());
trace(myCircle.getDiameter());
Definición de métodos de controlador de eventos en ActionScript 1.0
function myClipClass(){}
myClipClass.prototype = new MovieClip();
myClipClass.prototype.onLoad = function (){
trace("movie clip loaded");
}
myClipClass.prototype.onPress =
function(){
trace("pressed");
}
myClipClass.prototype.onEnterFrame =
function(){
trace("movie clip entered frame");
}
myClipClass.prototype.myfunction =
function(){
trace("myfunction called");
}
Object.registerClass
("myclipID",myClipClass);
this.attachMovie
("myclipID","clipName",3);
Creación de herencia en ActionScript 1.0
function Bike(length, color) {
this.length = lenght;
this.color = color;
this.pos = 0;
Bike.prototype.roll= function () {return this.pos += 20;};
var myBike = new Bike (55, "blue");
trace(myBike.roll());
trace(myBike.roll());
MountainBike.prototype = new Bike ();
var myKona = new MountainBike(20,"teal");
trace (myKona.roll());
* Los clips de película no heredan entre sí. Para crear herencia en los clips de película, puede utilizar el método Objetct.registerClass() para asignar una clase distinta de MovieClip a los clips de película.