AS3 tutorial clases, estructura y comprensión!


He visto en varios sitios algunos puntos interesantes que hablan de AS3, pero muy pocos se refiere a la estructura básica de una clase y sus tipos de componentes y las funciones ... bueno, fue mi favorito para feed'se en busca de algunos artículos que lo hablan, y cómo esperar que muy pocos, así que aquí va ... un tutorial sobre la manera de entender y construir las clases en AS3.

A partir ...

Con Flash Player 10 y Flash CS4 disponibles, y la proximidad del lanzamiento de Thermo Flex 4 y (esperemos) la acción Script 3 se está convirtiendo en moda, y cada vez veo más gente que busca información sobre cómo participar en AS3 .

Una gran base para comprender el AS3 es la comprensión del lenguaje orientado a objetos que utiliza una estructura optimizada del código sobre la base de las funciones que se realizan por "solicitud" para que el código y la correcta jerarquía y proporcionar el mejor rendimiento de la aplicación / animación. La gran ventaja de AS3 es separar el código en ficheros muy pequeños que están disponibles para ser compilado en la aplicación como parte juntos.

A pesar de que, inevitablemente, a muchas ventajas, también puede ser un poco difícil de entender la AS3, pero vamos a por pasos;

La OOP, o POO (Programación Orientada a Objetos), aporta una sólida manera de desarrollar el código de nuestra aplicación, que contiene muchas mejoras, tales como:

  • Estructura del código, bien organizada y fácil de entender.
  • Reutilización de código, que permite así como reducir los costes de la programación en muy acelera el desarrollo de aplicaciones a causa de la extensibilidad del código.
  • La fuerza y la velocidad del código, que permite un gran rendimiento, con muy pocos errores que puede ser fácilmente interceptado.
  • Gran ventaja de la migración de otros idiomas, principalmente de Java que contiene muchas similitudes debido a su uso ya de OOP.

La programación orientada a objetos basada en la abstracción del resto del código, y centrándose sólo en "pieza" de código / clase que están haciendo, el pecado de este código se considera un objeto, al igual que cualquier elemento que tiene características físicas, las definiciones y propiedades ... lo mismo pasa con estos objetos en AS3, mira un ejemplo:

La vida real; coche:

Características: marca, modelo, año

Funciones: a pie, de bloqueo, se acelera, rodaVolante, acendeLuz, apagaLuz

En cuanto esto para una clase en AS3:

Características / Variables: carro.marca, carro.modelo, carro.ano

Funciones: carro.anda (); carro.trava (), carro.acelera (), carro.rodaVolante (), carro.acendeLuz (), carro.apagaLuz ()

Esto es para los que leen mis tutoriales a AS3 ya no es extraño, pero ahora se enfoque el asunto de una manera diferente, explicando un poco más de clases.

Cuando hablamos de la clase, hay que tener especialmente en cuenta ciertos puntos, principalmente porque son la base del lenguaje orientado a objetos, lo que ya estaba presente en muchos lenguajes de programación como Java o PHP.

En general, el plan de AS3 debería tener en cuenta:

  • Definición / Clases de escritura
  • Creación de las propiedades, los métodos y las definiciones de acceso y el contenido
  • Control de acceso a las clases, propiedades, métodos y definiciones y variables
  • Creación de popriedades y métodos
  • Definición y uso de interfaces
  • Uso de métodos hereditarios, así como la re-escritura de los elementos de la clase

Resumiendo los elementos básicos, una clase que comprende todas las propiedades de un objeto (el objeto puede ser su propia clase) y sus definiciones y el comportamiento. Las clases en AS3 se componen de una extensión de archivo. Y se consideran los datos / objetos y puede ser declarada como si se utiliza otro tipo de objeto.

Una clase puede ser parte de un "paquete / grupo" llamado "paquete" que quiere con el código que es más fácil para el programador y, sobre todo, útil en la planificación de grupo.

Tome un ejemplo, tenemos un coche y una motocicleta, ambos son los coches, podemos incluye en el mismo paquete, pero entonces tenemos algunas diferencias, tienen un 4 ruedas, volante, 5 plazas y, por otro lado, tenemos la silla de ruedas motorizada con 2 ruedas, 2 puestos, manillar ... estas diferencias, además de organizar el código en el interior del envase "vehículo" puede ordenar los resultados por:

2 vehículos de ruedas

4 vehículos de ruedas

Habida cuenta de que nuestro paquete se distribuirá como:

Vehículos-> 2-ruedas> Moto

Vehículos-> 4-Ruedas> Fabricantes de coches

Si tenemos una moto más, haríamos:

Vehículos-> 2-ruedas> Bicicleta

Desde nuestros paquetes sería el siguiente: y veiculos.duasRodas y veiculos.quatroRodas Moto.as nuestras clases, y Carro.as Bicicleta.as.

Para crear los paquetes de estas clases, usariamos:

paquete duasRodas vehículos. duasRodas (

)

y

paquete quartoRodas vehículos. quartoRodas (

)

Desde la veiculos.quatroRodas representan necesariamente la estructura de la carpeta de nuestra carpeta de origen, raíz del proyecto, véase el ejemplo del proyecto Flex en el lado derecho, como usted puede ver, la carpeta src es la fuente de mi carpeta de proyectos, y es a partir de lo que es la estructura de la carpeta para configurar nuestro paquete.

Entonces voy a crear las carpetas src / coches / duasRodas y src / coches / quartoRodas que claramente identificar y organizar todas mis clases. Ya puedes ver los archivos (clases) Moto.as, Bicicleta.as y Carro.as correctamente creado y colocado en su correcta carpetas. Esto forma la estructura de nuestro paquete y su correcta clases.

Esta debe ser la estructura de los paquetes en AS3, con una clase no tiene que ser incluido en un paquete, pero en proyectos de mediano y gran tamaño es muy aconsejable seguir este tipo de organización. El nombre de la clase siempre debe ser iniciado por capitalización.

Tomemos el ejemplo de la clase Moto:

paquete duasRodas vehículos. duasRodas
(
público clase Moto
(
público función Moto ()
(
)
)
)

Empezamos con el paquete, definimos nuestra clase como públicas para que pueda ser instancia (por lo que pueden ser asignados y utilizados como una variable) y definir la función principal de nuestra clase como públicas como así.

Esta es la estructura básica, y que se pueden utilizar diferentes tipos de declaraciones a nuestra clase y funciones, tales como:

  • público - Declara la visibilidad maxima, publica, que es visible por todos los elementos de nuestra aplicación.
  • interior - visible sólo dentro de nuestro paquete, posiblemente sólo para uso interno.
  • Final - Clase final, imposible de ser prorrogado por otro de clase.
  • dinámica - Clase dinámica, se puede cambiar con los datos durante la ejecución de la aplicación añadiendo propiedades a la misma.

Las declaraciones finales y dinámico debe ser utilizado como sub elementos en la declaración de la clase, tales como:

  • público final de clase Moto
  • dinámica interna de clase Moto
  • clase pública dinámica Moto

Después de una clase preparada, no está automáticamente disponible en nuestra aplicación, cuando el deseo-hay que utilizar la aplicación indican que debería incluirse, de forma que usamos la importación, con indicación de su ruta de la carpeta raíz del proyecto:

importación duasRodas . Moto ; vehículos. duasRodas. Moto;

Y entonces debe ser instancia utilizando la nueva palabra:

privado var Moto = new CBR: Moto = new ; Moto ();

A partir de este momento nuestra clase es instancia en la variable CBR y puede ser utilizado en nuestra aplicación.

Nuestras clases pueden contener atributos o propiedades que también puede ser mostrado como variavies y pueden tener el siguiente código:

paquete duasRodas vehículos. duasRodas
(
público clase Moto
(
público var String ; versión: String;
público var String ; Marca: String;
público var uint ; color: UINT;

privado var uint = 0 ; velocidadeActual: UINT = 0;

público función Moto ()
(
)
)
)

donde se declararon las variables / tipo de propiedad, marca, color, donde son accesibles a cualquier aplicación, siempre que la clase ha sido instancia, estas declaraciones pueden ser de varios tipos:

  • público - que se puede acceder y definda en toda la aplicación, y los casos
  • privado - sólo para su uso en nuestra clase, no fuera accesible o en la misma sub-clase
  • protegidas - Disponible para su uso en nuestra clase, sino también en sub-clases
  • static - Disponible para su uso en clase, sino también en su ejemplo.

Después de la definición de clase y sus propiedades pueden definir los métodos, acciones o ejecutable de nuestra clase, conocidos como los métodos, las funciones pueden ser definidas como:

público función velInc : uint ) : void acelera (velInc: UINT): void (
velInc ; velocidadeActual + = velInc;
)

que se define como la función pública, recibiendo un aumento en la velocidad como argumento y que los aumentos en velocidadeActual. Estos métodos pueden ser declarados como:

  • público - visible a través de todo el código en la instancia de la clase.
  • privado - visible internamente en la clase, pero no en sub-clases.
  • protegidas - visible en la clase y sub-clases.
  • estático - sólo visible en la clase, pero no en los casos de la misma.

No podrán haber notado, pero en clase me dio un ejemplo de ello es la función del mismo nombre de la clase:

paquete duasRodas vehículos. duasRodas
(
público dinámico clase Moto
(
público var String ; versión: String;
público var String ; Marca: String;
público var uint ; color: UINT;
privado var uint = 0 ; velocidadeActual: UINT = 0;

público función Moto ()
(
)

público función velInc : uint ) : void acelera (velInc: UINT): void (
velInc ; velocidadeActual + = velInc;
)
)
)

Esta función se llama un constructor, y todo el contenido de esta función se realiza de inmediato a fin de que la clase se instancia el uso de la palabra nueva, como se explicó anteriormente. Este método debe ser público (público) y no puede ser con cualquiera de los otros "de control de acceso" como privada, interna o protegidos.

El constructor de la clase puede ser usado para fijar los valores o propiedades en la misma clase tan pronto como sea instancia, por ejemplo:

público función modeloM : String , marcaM : String ) Bike (modeloM: String, marca: String)
(
modeloM ; model = modeloM;
marcaM ; marca = nombre;
)

donde los argumentos y las marcas modeloM debe ser indicado en instantiation:

var Moto = new CBR: Moto = new " CBR " , " Honda " ) ; Moto ( "CBR", "Honda");

Estos argumentos pueden ser opcionales, pero debe indicar que para un valor por defecto para ellos:

público función modeloM : String = " R200 " , marcaM : String = " Suzuki " ) Bike (modeloM: String = "R200", marca: String = "Suzuki")
(
modeloM ; model = modeloM;
marcaM ; marca = nombre;
)

en la que podemos declarar en su instantiation o no estos argumentos:

var Moto = new CBR: Moto = new " CBR " , " Honda " ) ; Moto ( "CBR", "Honda");

var Moto = new CBR: Moto = new " CBR " ) ; Moto ( "CBR");

var Moto = new CBR: Moto = new ; Moto ();

En caso de que, en ausencia de atribución de los elementos (modeloM, marca) asumirá la función de los valores defecto mayo (modeloM = "R200" y marca = "Suzuki").

En las clases hay algunos puntos que pueden ser muy importantes en su estructura, de acceso para uso de la palabra, generalmente conocido como el setter getter'se internos que permitan establecer una variable cambiante no en su lugar, como variables privadas.

Estos get'se septiembre del permiso de conjunto / acceder a una variable privada sin tener que definir un papel para el acceso del público a ellos. La solución al tema de este tipo de acceso debe ser iniciado por el carácter _ como se muestra a continuación:

privado var uint ; _velocidadeMax: UINT;
privado var uint ; _rotacaoMax: UINT;

Para definir el de acceso, como las relaciones funciones, pero con algunas características en el caso de obtener (búsqueda):

público función obtener : uint velocidadeMax (): UINT (
volver _velocidadeMax;
)

donde se define como público, utilizando la palabra nomeDaVariavel obtener y devolver el mismo tipo de datos de la misma variable. Han regresado con el devolver la variable.

Para el mes de septiembre, para establecer el valor de una variable, usamos:

público función Septiembre vel : uint ) : void velocidadeMax (vel: UINT): void (
vel ; _velocidadeMax = nivel;
)

Tenga en cuenta que en ambos casos la variable en la declaración de la función se utiliza sin el carácter _.

Para utilizar estos getter'se del setter (puede usar y que sólo pueden utilizar una dependiendo de si queremos establecer o simplemente leer los datos que variable) indican que estamos en la instancia de la clase privada variable puede ser leída y modificada:

privado var Moto = new CBR: Moto = new " CBR " , " Honda " ) ; Moto ( "CBR", "Honda");

velocidadeMax = 240 ; //usando o set CBR. VelocidadeMax = 240; / / usando el septiembre

var uint = cbr . velocidadeMax ; //usando o get Nivel: UINT = CBR. VelocidadeMax; / / uso de obtener

Otra manera de cambiar estas variables, podría estar utilizando métodos y funciones, pero en este caso se pondrá a disposición de manera mucho más funciones y mayor que en la clase puede ser confuso para mezclar el calendario, véase:

público función : uint buscaVelocidadeMax (): UINT (
volver _velocidadeMax;
)

público función   vel : uint ) : void defineVelocidadeMax (vel: UINT): void (
vel ; _velocidadeMax = nivel;
)

pero esta vez tendríamos que utilizar:

privado var Moto = new CBR: Moto = new " CBR " , " Honda " ) ; Moto ( "CBR", "Honda");

defineVelocidadeMax ( 240 ) ; CBR. DefineVelocidadeMax (240);

var uint = cbr . buscaVelocidadeMax () ; Nivel: UINT = CBR. BuscaVelocidadeMax ();

Algor puede ver algunos ejemplos, tales como los siguientes que sirve a la lista, es decir, define un tipo de datos con un cierto nivel, muy útil para cierto conjunto de uso y la comparación en nuestra aplicación, véase:

público final clase HondaCBR (

público static const uint = 2 ; los cilindros: UINT = 2;
público static const String = " Honda " ; Marca: String = "Honda";
público static const String = " CBR " ; versión: String = "CBR";

público static const String = " CBR-RX001-2006 " ; serie: String = "RX001-CBR-2006";
público static const uint = 280 ; velMax: UINT = 280;
)

Esta clase sólo sirve para definir los datos como se trata de una función pública final se puede acceder por cualquier aplicación, pero no puede extenderse / cambiado y sus variavies constante y no cambia durante la ejecución.

Mira en nuestra clase original, podría poner esto en nuestra clase HondaCBR.as fuente y lugar:

importación HondaCBR;

público función modeloM : String = " R200 " , marcaM : String = " Suzuki " ) Bike (modeloM: String = "R200", marca: String = "Suzuki")
(
= HondaCBR . modelo & amp ;& amp ; marcaM = HondaCBR . marca ) if (modeloM = HondaCBR. Plantilla & amp; y amp; marca = HondaCBR. marca) (
HondaCBR . velMax ; _velocidadeMax = HondaCBR. velMax;
HondaCBR . modelo ; model = HondaCBR. modelo;
HondaCBR . marca ; marca = HondaCBR. marca;
/ / Aquí puede tener acceso a toda clase de ajustes:
/ / HondaCBR.serie
/ / HondaCBR.cilindros
)
algo más
(
modeloM ; model = modeloM;
marcaM ; marca = nombre;
)
)

Por lo tanto, que ver con eso, identificar rápidamente las características de nuestra moto, y que es un ejemplo entre muchos que puede simplificar mucho las cosas en AS3.

También hay algunos puntos muy útiles, tales como interfaces o re-escritura de métodos, a pesar de que requiere un buen conocimiento de la programación y AS3 ya que el puesto ya está bastante grande, es para una próxima oportunidad.

Espero que las cosas son más fáciles ahora y que por lo menos el AS3 es desmitificar.

Un abrazo.

la versión en formato pdf disponible temporalmente.
Dejar un comentario o una licencia Trackback

4 Comentarios

  1. 30 de octubre de 2008 a 3:01 pm | Permalink

    Felicidades Mario,

    Me ha gustado mucho, tuvo una duda que estaba con ella por algún tiempo :)

  2. 2 de noviembre de 2008 a 5:06 am | Permalink

    Felicitaciones, su aclaración sobre las clases son muy útiles. Es embarazoso "sweep" de la "net" y no encontrar el material que es claro y sencillo.

  3. Luis Fonseca
    3 de noviembre de 2008 a 2:37 pm | Permalink

    Felicitaciones por tutorial!

  4. 5 de noviembre de 2008 a 9:33 am | Permalink

    Gracias a todos por las palabras.

    [] 'S

Déjanos tu comentario

Su dirección de correo electrónico nunca es publicado o compartido. Los campos obligatorios están marcados con un *