09 01 08

Resumen sobre OOP en ActionScript 3

Escrito por: WeeDo en Flash, Tutoriales, AS3

Vale aclarar antes de comenzar, que esto no es un resumen de OOP (Programación Orientada a Objetos), sino de como se aplica y se usa esta forma de programar con AS3 en el IDE de Flash CS3. Por lo que se tiene que tener una idea de lo que es OOP.

Introducción:
ActionScript 3 nos permite seguir programando en la linea de tiempo como lo haciamos con AS2, pero es mucho más eficiente y profesional usarlo a través de Clases.
En AS todos los objetos nativos de Flash son Clases u Objetos (el objeto en si es una instancia de una Clase), por ejemplo MovieClip, TextField, MovieClipLoader, etc.
La idea de trabajar con Clases es generar nuestras propias Clases, como podría ser una Clase BotonSimple.as (como ejemplo simple), o una Clase GaleriaDeFotos.as (como ejemplo mas complejo), la cual seguramente usaría otras Clases más simples.


Ubicación de las Clases:
La Clases pueden estar ordenada dentro de carpetas y subcarpetas, las cuales suelen llamarse paquetes, estos paquetes nos permiten organizarnos de manera prolija, por ejemplo para un proyecto de mi pagina decabeza.net tendria organizado el paquete de una forma donde tendria la carpeta net, dentro la carpeta decabeza y dentro de esta carpetas, fx (donde por ejemplo guardaria las clases de efectos especiales), text (donde guardaria las clases de efectos y utilidades de textos) y utils (donde guardaria las clases de utilidades en general, como preloaders, botones, etc).

Para indicarle al IDE de Flash donde guardamos nuestras Clases (ClassPath) podemos hacerlo a 2 niveles:
Nivel Proyectos: donde la indicación de ruta es solo para ese proyecto.
Nivel Global: donde la indicación de ruta afectara a todos las peliculas que creemos con nuestro Flash.

Para el primer caso entramos dentro de "Settings" en las propiedades de nuestro proyecto, ahi clickeamos en el boton "Settings" al lado de "ActionScript Version" y en esa ventana agregamos nuestras Classpath (ruta de nuestro disco donde estan las clases).
Para el segundo caso vamos a "Edit" / "Preferences", seleccionamos la categoria "ActionScript" y clickeamos el boton "ActionScript 3.0 Settings" y en la ventana que nos abre ingresamos nuestras Classpath (ruta de nuestro disco donde estan las clases).

Podemos agregar la cantidad de Classpath que querramos, lo que hara que flash al compilar busque las clases que usamos en nuestro proyecto en todas esas carpetas.
En mi caso suelo usar dos Classpath a nivel Global.
"C:\Proyectos\Clases" que es donde guardo las Clases comunes a todos los proyectos y "./com" que indicaria que busque en una carpeta llama "com" en el directorio donde esta ubicado mi proyecto. En esa carpeta guardo las Clases especificas de ese proyecto.

Clase Main:
Lo que suelo hacer personalmente es usar una Clase "Main", algo muy común para los que programen en Java u otros lenguajes similares.
Esta Clase va a ser la Clase madre que se ejecute antes que todo y se va a encargar de ejecutar y manejar las demás Clases y todo lo que suceda en mi proyecto (sería como el primer frame lleno de programación clásico en AS2).
Para eso se genera un archivo Main.as y en nuestro .fla de AS3 lo ingresamos en las propiedas del proyecto donde dice "Document Class:"
De esta manjera le indicamos a Flash que Main.as sera nuestra Clase Principal.
Acá les dejo un buen video tutorial sobre este tema.

Asignar una Clase a un MovieClip:
Muchas veces nos puede ser útil asignarle una Clase a un MovieClip, por ejemplo si queremos hacer un Menú dinámico que duplica varias veces un mismo botón. Lo que podemos hacer es tener un MC en la libreria, el cual tendrá asignada una Clase llamada BotonSimple, la cual manejará los eventos de RollOver, Click y lo que querramos sumarle.
De esta forma todos los botones responderán a una misma clase por lo que si hacemos algún cambio afectará a todos lo botones.

Para hacer esto lo que hacemos es darle click derecho al MC en la librería y seleccionar la opción "linkage", en la ventana que se abre tildamos la opción de "Export for ActionScript" y le escribirmos el nombre de nuestra clase donde dice Class.
También podríamos escribir el nombre donde dice "Base Clase" siempre y cuando la clase que vayamos a usar extienda a un MovieClip.
Esto nos sería útil si queremos asignar una misma clase a varios MC distintos en la librería, ya que el campo "Class" debería tener un valor único.
Vale destacar que si nuestra clase está en un paquete "net/decabeza/utils" deberíamos escribirlo de esta forma "net.decabeza.utils.BotonSimple.as".

Clases Personalizadas:
También podemos tener Clases personalizadas que usaremos en nuestra Clase "Main.as" que no sea asignadas a un MovieClip.
Por ejemplo podríamos tenes una Clase llamada "LoadJPG.as" la cual cargue un jpg en nuestro proyecto.
Para llamar a esta clase desde Main o desde cualquier lado deberíamos crear una instancia (a no ser que sea una clase estática).

Actionscript:
  1. var cargador:LoadJPG =  new LoadJPG();

Asi creamos la instancia "cargador" la cual nos permitira ejecutar todos los métodos de nuestra clase.
Eso si, antes de usar una clase personalizada, como cualquier otra clase, en AS3 debemos importar la clase, para eso vamos a escribir una linea similar a esta, arriba de nuestra clase Main.

Actionscript:
  1. import net.decabeza.utils.LoadJPG

También podríamos importar todas las Clases de un paquete de esta forma

Actionscript:
  1. import net.decabeza.utils.*

Ahora si estaríamos en condiciones de usar nuestra Clase.

Bueno, hasta ahora esto es todo, faltarían millones de cosas por explicar, pero creo que es un buen comienzo, espero comentarios y preguntas para ir contestando y tal ves de alguna pregunta surja un nuevo artículos básico de AS3.

Saludos!

3 comentarios sobre “Resumen sobre OOP en ActionScript 3”

  • 1

    Egs! dijo:

    Arrancamos muy bien! No se si el espiritu es comentar algo basico, pero podria sugerir explicar un poco que puedo hacer dentro de una clase, como por ejemplo herencia, visibilidad, getter/ setters, convenciones de escritura. Espectacular todo!!! Saludos

  • 2

    WeeDo dijo:

    Si Egs, faltaria explicar eso, en una segunda parte voy a ver si puedo ampliar esa parte del tema.

    Saludos!

  • 3

    Hideki dijo:

    Otra cosa que me hubiera parecido bueno dentro del artículo hubiera sido un pequeño ejemplo, un .fla con sus respectivos .as para entender un poco mejor la idea.

    Gracias por la introducción…

Deje un comentario