Paquete | Nivel superior |
Clase | public dynamic class Class |
Herencia | Class Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
.
Algunos métodos, como flash.net.getClassByAlias()
, devuelven un objeto de tipo Class. Otros métodos pueden tener un parámetro de tipo Class como, por ejemplo, flash.net.registerClassAlias()
.
El nombre de la clase es la referencia al objeto Class, como se muestra en este ejemplo:
class Foo { }
La sentencia class Foo{}
es la definición de clase que crea el objeto Class Foo. Además, la sentencia new Foo()
creará una nueva instancia de la clase Foo y el resultado será de tipo Foo.
Utilice la sentencia class
para declarar las clases. Los objetos Class son útiles para utilizar técnicas avanzadas, como la asignación de clases a un objeto de instancia existente en tiempo de ejecución, como se muestra en la sección "Ejemplos" incluida más abajo.
Todas las propiedades y métodos estáticos de una clase residen en el objeto Class de la clase. Class declara prototype
ella misma.
Generalmente, no es necesario declarar ni crear variables de tipo Class manualmente. Sin embargo, en el código siguiente, se asigna una clase como propiedad pública de Class circleClass
; puede hacer referencia a esta propiedad de Class como una propiedad de la clase principal Library:
package { import flash.display.Sprite; public class Library extends Sprite { public var circleClass:Class = Circle; public function Library() { } } } import flash.display.Shape; class Circle extends Shape { public function Circle(color:uint = 0xFFCC00, radius:Number = 10) { graphics.beginFill(color); graphics.drawCircle(radius, radius, radius); } }
Otro archivo SWF puede cargar el archivo Library.swf resultante y luego crear instancias de objetos de tipo Circle. En el siguiente ejemplo se muestra una forma de obtener acceso a los activos de un archivo SWF secundario. (Otras técnicas consisten en utilizar flash.utils.getDefnitionByName()
o importar definiciones stub del archivo SWF secundario.)
package { import flash.display.Sprite; import flash.display.Shape; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; public class LibaryLoader extends Sprite { public function LibaryLoader() { var ldr:Loader = new Loader(); var urlReq:URLRequest = new URLRequest("Library.swf"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); } private function loaded(event:Event):void { var library:Object = event.target.content; var circle:Shape = new library.circleClass(); addChild(circle); } } }
En ActionScript 3.0, puede crear clases incorporadas para activos externos (como, por ejemplo, imágenes, sonidos o fuentes) que se compilan en archivos SWF. En versiones anteriores de ActionScript, dichos activos se asociaban mediante un identificador de vinculación con el método MovieClip.attachMovie()
. En ActionScript 3.0, cada activo incorporado se representa mediante una clase de activo incorporado. Por consiguiente, puede utilizar el operador new
para crear una instancia de la clase asociada del activo y llamar a los métodos y propiedades de dicho activo.
Elementos de API relacionados
- Declare dos clases como
ClassA
yClassB
. - Declare una variable de tipo Class llamada
classToConstruct
y una de tipo Boolean llamadachooseClassA
, que se define comotrue
en este caso, pero el código debería utilizar una expresión de prueba personalizada para definir el valor de dicha variable.
package { import flash.display.Sprite; public class ClassExample extends Sprite { public function ClassExample() { var classToConstruct:Class; var classInstance:Object; classToConstruct = ClassA; classInstance = new classToConstruct(); trace(classInstance); // [object ClassA] classToConstruct = ClassB; classInstance = new classToConstruct(); trace(classInstance); // [object ClassB] } } } class ClassA { } class ClassB { }
Tue Jun 12 2018, 02:12 PM Z