Pakket | Hoofdniveau |
Klasse | public dynamic class Class |
Overerving | Class Object |
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
wordt aangeroepen.
Sommige methoden, zoals flash.net.getClassByAlias()
, retourneren een object van het type Class. Andere methoden hebben een parameter van het type Class, zoals flash.net.registerClassAlias()
.
De klassenaam is de verwijzing naar het object Class, zoals gedemonstreerd door dit voorbeeld:
class Foo { }
De instructie class Foo{}
is de klassedefinitie die het klasseobject Foo maakt. Hiernaast maakt de instructie new Foo()
een nieuwe instantie van de klasse Foo en het resultaat zal van het type Foo zijn.
Gebruik de instructie class
om de klassen te declareren. Objecten Class zijn nuttig voor geavanceerde technieken zoals het bij uitvoering toewijzen van klassen aan een bestaande objectinstantie, zoals getoond in de sectie 'Voorbeelden' hieronder.
Alle statische eigenschappen en methoden van een klasse bevinden zich op het object Class van een klasse. Class declareert zelf prototype
.
Over het algemeen hoeft u variabelen van het type Class niet handmatig te declareren of maken. In de volgende code wordt echter een klasse aangesteld als een public klasse-eigenschap circleClass
en u kunt naar deze klasse-eigenschap verwijzen als een eigenschap van de hoofdklasse 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); } }
Een ander SWF-bestand kan het resulterende Library.swf-bestand laden en vervolgens de objecten van het type Circle instantiëren. Het volgende voorbeeld toont een manier om toegang te krijgen tot de elementen van een onderliggend SWF-bestand. (Overige manieren omvatten het gebruik van flash.utils.getDefnitionByName()
of het importeren van stubdefinities van het onderliggende SWF-bestand.)
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); } } }
In ActionScript 3.0 kunt u ingesloten klassen maken voor externe elementen (zoals afbeeldingen, geluiden of lettertypen) die in SWF-bestanden zijn gecompileerd. In lagere versies van ActionScript koppelde u deze elementen via een koppelings-id aan de methode MovieClip.attachMovie()
. In ActionScript 3.0 wordt elk ingesloten element vertegenwoordigd door een uniek ingesloten klasse-element. Daarom kunt u de operator new
gebruiken om de aan het element gekoppelde klasse te instantiëren en methoden en eigenschappen voor dat element aan te roepen.
Verwante API-elementen
- Declareer twee klassen als
ClassA
enClassB
. - Declareer een variabele van het type Class met de naam
classToConstruct
en een van het type BooleanchooseClassA
, die in dit geval ingesteld staat optrue
. De code kan echter een aangepaste tekstexpressie gebruiken om de waarde van die variabele in te stellen.
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:42 AM Z