Flash CS4 Professional ActionScript 2.0

Miembros de clase

La mayoría de los miembros (métodos y propiedades) descritos hasta ahora en este capítulo son de un tipo denominado miembros de instancias. Por cada miembro de instancia, existe una copia exclusiva de dicho miembro en cada instancia de la clase. Por ejemplo, la variable de miembro email de la clase Sample tiene un miembro de instancia, porque cada persona tiene una dirección de correo electrónico diferente.

Otro tipo de miembro es un miembro de clase. Sólo hay una copia de un miembro de clase, que se utiliza para toda la clase. Todas las variables declaradas dentro de una clase, pero fuera de una función, son propiedades de la clase. En el siguiente ejemplo, la clase Person tiene dos propiedades, age y username, de tipo Number y String, respectivamente:

class Person {
    public var age:Number;
    public var username:String;
}

Asimismo, todas las funciones declaradas dentro de una clase se consideran un método de la clase. En el ejemplo de la clase Person, puede crear un método denominado getInfo():

class Person {
    public var age:Number;
    public var username:String;
    public function getInfo():String {
        // Definición del método getInfo()
    }
}

En el fragmento de código anterior, el método getInfo() de la clase Person, así como las propiedades age y username, son miembros de instancia públicos. La propiedad age no sería un buen miembro de clase, dado que cada persona tiene una edad diferente. Sólo deberían ser miembros de clase las propiedades y métodos compartidos por todos los individuos de la clase.

Supongamos que desea que todas las clases tengan una variable species que indique el nombre latino de cada especie a la que representa la clase. Por cada objeto Person, la especie es Homo sapiens. Sería un despilfarro almacenar una copia exclusiva de la cadena "Homo sapiens" por cada instancia de la clase, por lo que este miembro debe ser un miembro de clase.

Los miembros de clases se declaran con la palabra clave static. Por ejemplo, puede declarar el miembro de clase species con el siguiente código:

class Person {
  public static var species:String = "Homo sapiens";
  // ...
}

También puede declarar métodos de una clase para que sean estáticos, como se muestra en el siguiente código:

public static function getSpecies():String {
    return Person.species;
}

Los métodos estáticos sólo pueden acceder a las propiedades estáticas, no a las propiedades de instancia. Por ejemplo, el siguiente código provoca un error de compilador porque el método de la clase getAge() hace referencia a la variable de instancia age:

class Person {
    public var age:Number = 15;
    // ...
    public static function getAge():Number {
        return age; /* **Error**: No se puede acceder a variables de instancia en funciones estáticas. */
    }
}

Para resolver este problema, podría hacer que el método fuera un método de instancia o hacer que la variable fuera una variable de clase.

Para más información sobre los miembros de clase (también denominados propiedades estáticas), consulte Métodos y propiedades estáticos.

Para ver ejemplos que ilustran la creación de un menú dinámico con datos XML y un archivo de clase personalizado, visite la página de ejemplos de Flash en
www.adobe.com/go/learn_fl_samples_es. El ejemplo llama al constructor XmlMenu() de ActionScript y le pasa dos parámetros: la ruta al archivo de menú XML y una referencia a la línea de tiempo actual. Descargue y descomprima el archivo zip Samples y vaya a la carpeta ActionScript2.0/XML_Menu para acceder a los ejemplos.

  • XmlMenu.as
  • xmlmenu.fla