Definiciones de clase

En las definiciones de clase de ActionScript 3.0 se utiliza una sintaxis similar a la utilizada en las definiciones de clase de ActionScript 2.0. La sintaxis correcta de una definición de clase requiere la palabra clave class seguida del nombre de la clase. El cuerpo de la clase, que se escribe entre llaves ({}), sigue al nombre de la clase. Por ejemplo, el código siguiente crea una clase denominada Shape que contiene una variable denominada visible:

public class Shape
{
    var visible:Boolean = true;
}

Un cambio de sintaxis importante afecta a las definiciones de clase que están dentro de un paquete. En ActionScript 2.0, si una clase estaba dentro de un paquete, había que incluir el nombre de paquete en la declaración de la clase. En ActionScript 3.0 se incluye la sentencia package y hay que incluir el nombre del paquete en la declaración del paquete, no en la declaración de clase. Por ejemplo, las siguientes declaraciones de clase muestran la manera de definir la clase BitmapData, que forma parte del paquete flash.display, en ActionScript 2.0 y en ActionScript 3.0:

// ActionScript 2.0
class flash.display.BitmapData {}

// ActionScript 3.0
package flash.display
{
    public class BitmapData {}
}

Subtemas

Atributos de clase
Cuerpo de la clase

Atributos de clase

ActionScript 3.0 permite modificar las definiciones de clase mediante uno de los cuatro atributos siguientes:

Atributo

Definición

dynamic

Permite añadir propiedades a instancias en tiempo de ejecución.

final

No debe ser ampliada por otra clase.

internal (valor predeterminado)

Visible para referencias dentro del paquete actual.

public

Visible para referencias en todas partes.

Todos estos atributos, salvo internal, deben ser incluidos explícitamente para obtener el comportamiento asociado. Por ejemplo, si no se incluye el atributo dynamic al definir una clase, no se podrá añadir propiedades a una instancia de clase en tiempo de ejecución. Un atributo se asigna explícitamente colocándolo al principio de la definición de clase, como se muestra en el código siguiente:

dynamic class Shape {}

Hay que tener en cuenta que la lista no incluye un atributo denominado abstract. Esto se debe a que ActionScript 3.0 no admite clases abstractas. La lista tampoco incluye atributos denominados private y protected. Estos atributos sólo tienen significado dentro de una definición de clase y no se pueden aplicar a las mismas clases. Si no se desea que una clase sea visible públicamente fuera de un paquete, debe colocarse la clase dentro de un paquete y marcarse con el atributo internal. Como alternativa, se pueden omitir los atributos internal y public, y el compilador añadirá automáticamente el atributo internal. Si no se desea que una clase sea visible fuera del archivo de código fuente en el que está definida, se debe colocar al final del archivo de código fuente después de la llave final de la definición de paquete.

Cuerpo de la clase

El cuerpo de la clase, que se escribe entre llaves, se usa para definir las variables, constantes y métodos de la clase. En el siguiente ejemplo se muestra la declaración para la clase Accessibility en la API de Adobe Flash Player:

public final class Accessibility
{
    public static function get active():Boolean;
    public static function updateProperties():void;
}

También se puede definir un espacio de nombres dentro de un cuerpo de clase. En el siguiente ejemplo se muestra cómo se puede definir un espacio de nombres en el cuerpo de una clase y utilizarse como atributo de un método en dicha clase:

public class SampleClass
{
    public namespace sampleNamespace;
    sampleNamespace function doSomething():void;
}

ActionScript 3.0 permite incluir en el cuerpo de una clase no sólo definiciones, sino también sentencias. Las sentencias que están dentro de un cuerpo de clase pero fuera de una definición de método se ejecutan una sola vez: cuando se encuentra por primera vez la definición de la clase y se crea el objeto de clase asociado. En el ejemplo siguiente se incluye una llamada a una función externa, hello(), y una sentencia trace que emite un mensaje de confirmación cuando se define la clase:

function hello():String
{
    trace("hola");
}
class SampleClass
{
    hello();
    trace("class created");
}
// se emite cuando se crea la clase
hola
class created

A diferencia de las versiones anteriores de ActionScript, en ActionScript 3.0 se permite definir en un mismo cuerpo de clase una propiedad estática y una propiedad de instancia con el mismo nombre. Por ejemplo, el código siguiente declara una variable estática denominada message y una variable de instancia con el mismo nombre:

class StaticTest
{
    static var message:String = "static variable";
    var message:String = "instance variable";
}
// En el script
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // salida: variable estática
trace(myST.message);       // salida: variable de instancia

Flash CS3

 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/main/00000061.html