Podría darse el caso que quisiéramos, en función de una entrada del usuario o cualquier cosa, crear diferentes objetos, instancias de clases distintas. Podríamos hacer esto de diversas maneras: tal vez un switch, o algo por el estilo, pero hay una manera mucho más práctica y que puede dar mucho juego.
Supongamos que tengo una película con dos símbolos: un cuadrado y un triángulo, cada uno de los cuales tiene como clase base Forma y como clase individual Cuadrado y Triangulo, respectivamente (no me hizo falta romperme mucho la cabeza). Por ejemplo, el usuario tiene que decidir si quiere añadir un cuadrado o un triángulo al escenario. Yendo a lo fundamental:
Código :
import clases.Forma; var choice:String; // Esta será la elección del usuario var Clase:Class = getDefinitionByName (choice) as Class; // Esta es la línea clave; se define una variable // con la clase Class y mediante la functión // getDefinitionByName que recibe una cadena // obtenemos una referencia a la clase deseada var forma:Forma = new Clase(); // Y esta es la magia del truco :) // La variable, de todas maneras, siempre ha de ser // de una superclase de la clase elegida addChild (forma);