Clases en AS2 (3): Clases dinámicas.

Ahora probemos algo interesante, en la clase original hemos definido algunas propiedades como ojos. piernas y cerebro. Ahora bien, uno puede setear los valores de la clase dinámicamente, por ejemplo

miHumano.piernas=3;

¿Pero que pasararía si quiero adherir otra propiedad más a la instancia que estoy manejando? algo como:

miHumano.cabello="negro"

El compilador me sacaría este error:

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 4: There is no property with the name 'cabello'. miHumano.cabello="negro";

Obvio, en la clase original no existe la propiedad "cabello". ¿Que pasa entonces? ¿no puedo ponerle metodos nuevos? sí puedes, pero necesitas definir la clase original como clase dinámica. Entendamos esto de clase DINAMICA. Algunas clases que usas en flash (built-in classes), tales como MovieClip, SharedObject o LoadVars, son clases dinámicas, esto es porque tu puedes ponerles dinámicamente métodos y propiedades a esas instancias que de por si no poseen. Otras clases built-in como TextField NO SON DINÁMICAS y si quieres ponerles métodos o propiedades nuevas no podrás y Flash te generará mensajes de error.

Entonces ¿como hacer mi clase dinámica? es muy sencillo, solo pon detrás de la clase la palabra clave "dynamic":

dynamic class Humano2{
//definimos la clase con 2 propiedades
var nombre:String;
......etc

Y ahora podemos jugar asi en el fla:

var miHumano2:Humano2=new Humano2("José",2,2,false); miHumano2.piernas=3;//esto funcionaria bien sin dynamic.
miHumano2.cabello="negro";//esto no funcionaría bien sin dynamic.
trace(miHumano2.descripcion());

Cabe señalar que las subclases de las clases dinámicas (las extensiones (EXTENDS) de una clase dinámica) son también dinámicas. Veremos esto más adelante.

Baja el fla aquí

Manuel Jesús Vejarano::: Derechos Reservados