class

Disponibilidad

Flash Player 6.

Sintaxis

[dynamic] class className  [ extends superClass ] 
              [ implements interfaceName [, interfaceName... ] ]
{
  // la definición de clase
}

Nota: para utilizar esta palabra clave, debe especificar ActionScript 2.0 y Flash Player 6 o posterior en la ficha Flash del cuadro de diálogo Configuración de publicación del archivo FLA. Esta palabra clave sólo se admite si se utiliza en archivos de script externos, no en scripts escritos en el panel Acciones.

Parámetros

className El nombre completo de la clase.

superClass Opcional; el nombre de la clase de la que className se extiende (de la que se hereda).

interfaceName Opcional; el nombre de la interfaz cuyos métodos debe implementar className.

Descripción

Sentencia; define una clase personalizada, que permite crear instancias de objetos que comparten métodos y propiedades que define el usuario. Por ejemplo, si está desarrollando un sistema de seguimiento de facturas, podría crear una clase de factura que definiera todos los métodos y las propiedades que cada factura debería tener. Luego podría usar el comando new factura() para crear objetos de factura.

El nombre de la clase debe ser el mismo que el del archivo externo que contiene la clase. Por ejemplo, si asigna a una clase el nombre Student, el archivo que define la clase debe llamarse Student.as.

El nombre de la clase debe estar completo en el archivo en el que está declarada; es decir, debe reflejar el directorio en el que está almacenada. Por ejemplo, si crea una clase llamada RequiredClass, que esté almacenada en el directorio myClasses/education/curriculum, debe declarar la clase en el archivo RequiredClass.as de esta forma:

class myClasses.education.curriculum.RequiredClass {
}

Por este motivo, es aconsejable planificar una estructura de directorios antes de empezar a crear clases. De otro modo, si decide mover archivos de clases después de crearlos, deberá modificar las sentencias de declaración de clases para reflejar su nueva ubicación.

Las definiciones de clase no pueden anidarse; es decir, no pueden definirse clases adicionales en una definición de clase.

Para indicar que los objetos pueden añadir y acceder a propiedades dinámicas en tiempo de ejecución, ponga la palabra clave dynamic delante de la sentencia de clase. Para crear clases basadas en las interfaces, utilice la palabra clave implements. Para crear subclases de una clase, utilice la palabra clave extends. Una clase puede ampliar solamente una clase, pero puede implementar varias interfaces. Puede utilizar las palabras clave implements y extends en una única sentencia.

class C implements Interface_i, Interface_j    // Correcto
class C extends Class_d implements Interface_i, Interface_j    // Correcto
class C extends Class_d, Class_e    // Incorrecto 

Para más información, consulte Creación y utilización de clases.

Ejemplo

En el ejemplo siguiente se crea una clase denominada Plant. Su constructor toma dos parámetros.

// Nombre de archivo Plant.as
class Plant {
  // Definir los tipos y los nombres de propiedad
  var leafType:String;
  var bloomSeason:String;
  // La línea siguiente es un constructor
  // porque tiene el mismo nombre que la clase
  function Plant (param_leafType:String, param_bloomSeason:String) {
      // Asignar valores pasados a las propiedades cuando se crea el nuevo objeto Plant
    leafType = param_leafType;
    bloomSeason = param_bloomSeason;
  }
  // Crear métodos para volver a ejecutar los valores de propiedad, porque
  // se recomienda no crear referencias directamente a una propiedad de una clase
  function getLeafType():String {return leafType};
  function getBloomSeason():String {return bloomSeason};
}

En un archivo de script externo o en el panel Acciones, utilice el operador new para crear un objeto Plant.

var pineTree:Plant = new Plant("Perenne","N/A");
// Confirmar que los parámetros se han pasado correctamente
trace(pineTree.getLeafType());
trace(pineTree.getBloomSeason());

Véase también

dynamic, extends, implements, import, interface, new, Object.registerClass()