Pacote | Nível superior |
Classe | public dynamic class Class |
Herança | Class Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
.
Alguns métodos, como flash.net.getClassByAlias()
, retornam um objeto do tipo Class. Outros métodos podem ter um parâmetro do tipo Class, como flash.net.registerClassAlias()
.
O nome da classe é a referência ao objeto Class, como mostra o exemplo:
class Foo { }
A instrução class Foo{}
é a definição de classe que cria o objeto Class Foo. Além disso, a instrução new Foo()
criará uma nova ocorrência da classe Foo e o resultado será do tipo Foo.
Use a instrução class
para declarar as suas classes. Objetos Class são úteis para técnicas avançadas, como atribuir classes a uma ocorrência de objeto existente em tempo de execução, como mostra a seção "Exemplos" a seguir.
Todos os métodos e propriedades estáticos de uma classe residem no objeto Class dessa classe. A classe, por si só, declara prototype
.
Em geral, não é necessário declarar ou criar variáveis do tipo Class manualmente. Entretanto, no código a seguir, uma classe é atribuída como uma propriedade Class pública, circleClass
, e você pode fazer referência a essa propriedade de Class como uma propriedade da classe Library principal:
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); } }
Outro arquivo SWF pode carregar o arquivo .swf da Biblioteca resultante e, em seguida, instanciar objetos do tipo Circle. O exemplo a seguir mostra uma maneira de obter acesso aos recursos de um arquivo SWF-filho. (Outras técnicas incluem o uso de flash.utils.getDefnitionByName()
ou a importação de definições de stub do arquivo SWF-filho.)
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); } } }
No ActionScript 3.0, você pode criar classes incorporadas para recursos externos (como imagens, sons ou fontes) que são compiladas em arquivos SWF. Em versões anteriores do ActionScript, esses recursos eram associados com o uso de um ID de ligação com o método MovieClip.attachMovie()
. No ActionScript 3.0, cada recurso incorporado é representado por uma classe de recurso incorporado exclusiva. Portanto, você pode usar o operador new
para instanciar a classe associada do recurso e chamar métodos e propriedades nesse recurso.
Elementos da API relacionados
- Declare duas classes como
ClassA
eClassB
. - Declare uma variável do tipo Class denominada
classToConstruct
e uma do tipo BooleanchooseClassA
, definida comotrue
nesse caso. Porém, o seu código não pode usar uma expressão de teste personalizada para definir o valor dessa variável.
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 { }
Wed Jun 13 2018, 11:10 AM Z