Instructies zijn taalelementen die een handeling uitvoeren of opgeven bij uitvoering. De instructie return
retourneert bijvoorbeeld een resultaatwaarde van de functie waarin deze wordt uitgevoerd. De instructie if
evalueert een voorwaarde om de volgende handeling te bepalen die moet worden uitgevoerd. De instructie switch
maakt een vertakkende structuur voor ActionScript-instructies.
Trefwoorden voor kenmerken wijzigen de betekenis van definities en kan worden toegepast op definities van klassen, variabelen, functies en naamruimten. trefwoorden voor definities worden gebruikt om entiteiten zoals variabelen, functies, klassen en interfaces te definiëren. trefwoorden voor primaire expressies vertegenwoordigen letterlijke waarden. Zie voor een lijst met gereserveerde woorden ActionScript 3.0 leren gebruiken.
Compileraanwijzingen bevatten aanwijzingen en definities die een effect kunnen hebben bij compileren of uitvoering. Compileraanwijzingen zonder aanwijzingen of definities worden in de volgende tabel als compileraanwijzingen aangeduid.
trefwoorden voor primaire expressies | ||
---|---|---|
false | Booleaanse waarde die false vertegenwoordigt. | |
null | Een speciale waarde die aan variabelen kan worden toegewezen of door een functie kan worden geretourneerd wanneer geen gegevens zijn opgegeven. | |
this | Een verwijzing naar het object dat een methode bevat | |
true | Booleaanse waarde die true vertegenwoordigt. | |
compileraanwijzingen | ||
default xml namespace |
Met de aanwijzing default xml namespace wordt de standaardnaamruimte ingesteld die voor XML-objecten moet worden gebruikt.
| |
import | Maakt klassen en pakketten beschikbaar voor uw code. | |
include | Zorgt dat de inhoud van het opgegeven bestand wordt opgenomen alsof de opdrachten in het bestand deel zijn van het aanroepende script. | |
use namespace | Hiermee wordt de opgegeven naamruimten toegevoegd aan de reeks open naamruimten. | |
instructie | ||
break | Wordt gebruikt binnen een lus (for , for..in , for each..in , do..while of while ) of binnen een blok instructies voor een bepaalde case in een switch -instructie. | |
case | Definieert een sprongdoel voor de instructie switch . | |
continue | Springt over alle resterende instructies in de binnenste lus en start de volgende herhaling van de lus alsof deze op normale wijze bij het einde was aangekomen. | |
default | Definieert de standaard-case voor een instructie switch . | |
do..while | Lijkt op een lus while , met dit verschil dat de instructies eenmaal worden uitgevoerd voorafgaand aan de eerste evaluatie van de voorwaarde. | |
else | Geeft op welke instructies moeten worden uitgevoerd als de voorwaarde in de instructie if de waarde false retourneert. | |
for | Evalueert de expressie init (initialiseren) eenmaal en start vervolgens een herhalingsreeks. | |
for..in | Doorloopt de dynamische eigenschappen van een object of elementen in een array en voert de statement uit voor elke eigenschap of elk element. | |
for each..in | Doorloopt de items van een verzameling en voert voor elk item statement uit. | |
if | Evalueert een voorwaarde om te bepalen welke instructie vervolgens moet worden uitgevoerd. | |
label | Koppelt een instructie aan een id waarnaar kan worden verwezen met break of continue . | |
return | Hiermee wordt bij uitvoering onmiddellijk naar de aanroepende functie teruggekeerd. | |
super | Roept de versie van een methode of constructor in de superklasse of bovenliggende klasse aan. | |
switch | Hiermee wordt het beheer overgedragen naar één van verschillende instructies, afhankelijk van de waarde van een expressie. | |
throw | Genereert een fout die kan worden afgehandeld, of afgevangen, door een codeblok catch . | |
try..catch..finally | Omsluit een codeblok waarin een fout kan optreden en reageert vervolgens op de fout. | |
while | Evalueert een voorwaarde. Wanneer deze de waarde true oplevert, worden een of meer instructies uitgevoerd voordat de voorwaarde opnieuw wordt geëvalueerd. | |
with | Stelt een standaardobject in dat wordt gebruikt voor uitvoering van een instructie of instructies, waardoor de hoeveelheid te schrijven code mogelijk wordt verminderd. | |
naamruimten | ||
AS3 | Definieert methoden en eigenschappen van de kernklassen van ActionScript, die vaste eigenschappen zijn in plaats van eigenschappen prototype. | |
flash_proxy | Definieert de methoden van de klasse Proxy. | |
object_proxy | Definieert de methoden van de klasse ObjectProxy. | |
trefwoorden voor definities | ||
... (rest) parameter | Geeft op dat een functie een willekeurig aantal door komma's gescheiden argumenten accepteert. | |
class | Definieert een klasse waarmee u objecten kunt instantiëren die methoden en eigenschappen delen die u definieert. | |
const | Geeft een constante op. Dit is een variabele waaraan maar eenmaal een waarde kan worden toegekend. | |
extends | Definieert een klasse die een subklasse van een andere klasse is. | |
function | Bestaat uit een set instructies die u definieert om een bepaalde taak uit te voeren. | |
get | Definieert een getter, een methode die als een eigenschap kan worden gelezen. | |
implements | Geeft op dat een klasse een of meer interfaces implementeert. | |
interface | Definieert een interface. | |
namespace | Hiermee kunt u de zichtbaarheid van definities beheren. | |
package | Hiermee kunt u uw code in discrete groepen ordenen die door andere scripts kunnen worden geïmporteerd. | |
set | Definieert een setter. Dit is een methode die in de openbare interface als eigenschap wordt weergegeven. | |
var | Geeft een variabele op. | |
trefwoorden voor kenmerken | ||
dynamic | Geeft op dat instanties van een klasse dynamische eigenschappen kunnen bezitten die bij uitvoering worden toegevoegd. | |
final | Geeft op dat een methode niet kan worden overschreven of dat een klasse niet kan worden uitgebreid. | |
internal | Geeft op dat een klasse, variabele, constante of functie beschikbaar is voor elke aanroeper in hetzelfde pakket. | |
native | Geeft op dat een functie of methode door Flash Player in native code wordt geïmplementeerd. | |
override | Geeft op dat een methode een overerfde methode vervangt. | |
private | Geeft op dat een variabele, constante, methode of naamruimte alleen beschikbaar is voor de klasse die deze declareert of definieert. | |
protected | Geeft op dat een variabele, constante, methode of naamruimte alleen beschikbaar is voor de klasse die deze declareert of definieert en voor subklassen van die klasse. | |
public | Geeft op dat een klasse, variabele, constante of methode beschikbaar is voor elke aanroeper. | |
static | Geeft op dat een variabele, constante of methode tot de klasse behoort en niet tot de instanties van de klasse. |
... (rest) parameter | trefwoorden voor definities |
function functionName(parameter0, parameter1, ...rest){ // statement(s) } |
Geeft op dat een functie een willekeurig aantal door komma's gescheiden argumenten accepteert. De lijst met argumenten wordt een array die beschikbaar is in de gehele hoofdtekst van de functie. De naam van de array wordt opgegeven na de tekens ...
in de parameterdeclaratie. De parameter kan elke naam hebben die geen trefwoord is.
Bij gebruik met andere parameters moet de parameterdeclaratie ...
(rest) de laatste parameter zijn die wordt opgegeven. De parameterarray ...
(rest) wordt alleen gevuld wanneer het aantal argumenten dat aan de functie is doorgegeven, hoger is dan het aantal overige parameters.
Elk argument in de lijst met door komma's gescheiden argumenten wordt in een element van de array geplaatst. Wanneer u een instantie van de klasse Array doorgeeft, wordt de gehele array in één element van de parameterarray ...
(rest).
Wanneer u deze parameter gebruikt, is het object arguments
niet beschikbaar. Hoewel de parameter ...
(rest) dezelfde functionaliteit biedt als de array arguments
en de eigenschap arguments.length
, biedt deze niet dezelfde soort functionaliteit als arguments.callee
. Zorg ervoor dat u arguments.callee
niet hoeft te gebruiken voordat de parameter ...
(rest) wordt gebruikt.
rest:* — Een id die de naam van de array met argumenten vertegenwoordigt die aan de functie worden doorgegeven. De parameter hoeft niet de naam rest te hebben maar kan elke naam hebben die geen trefwoord vormt. U kunt het gegevenstype van de parameter ... (rest) opgeven als Array, maar dit zou tot verwarring kunnen leiden aangezien de parameter een lijst met door komma's gescheiden waarden accepteert, hetgeen niet hetzelfde is als een instantie van de klasse Array. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt de parameter ... (rest) in twee verschillende functies gebruikt. Bij de eerste functie, traceParams, wordt de functie trace() aangeroepen voor elk van de argumenten in de array rest. Bij de tweede functie, average(), wordt het gemiddelde van de lijst met argumenten geretourneerd. De tweede functie gebruikt ook een andere naam, args, voor de parameter.
package { import flash.display.MovieClip; public class RestParamExample extends MovieClip { public function RestParamExample() { traceParams(100, 130, "two"); // 100,130,two trace(average(4, 7, 13)); // 8 } } } function traceParams(... rest) { trace(rest); } function average(... args) : Number{ var sum:Number = 0; for (var i:uint = 0; i < args.length; i++) { sum += args[i]; } return (sum / args.length); }
Verwante API-elementen
AS3 | naamruimten |
Definieert methoden en eigenschappen van de kernklassen van ActionScript, die vaste eigenschappen zijn in plaats van eigenschappen prototype. Als u de compileroptie "-as3" instelt op true
(de standaardinstelling in Flex Builder 2), wordt de naamruimte AS3 automatisch geopend voor alle kernklassen. Dit betekent dat een instantie van een kernklasse vaste eigenschappen en methoden gebruikt in plaats van de versies van diezelfde eigenschappen en methoden die aan het prototypeobject van de klasse zijn gekoppeld. Het gebruik van vaste eigenschappen resulteert doorgaans in betere prestaties, maar dit gaat wel ten koste van achterwaartse compatibiliteit met de ECMAScript Language Specification (ECMA-262), 3rd Edition.
Verwante API-elementen
break | instructie |
|
Wordt gebruikt binnen een lus (for
, for..in
, for each..in
, do..while
of while
) of binnen een blok instructies voor een bepaalde case in een switch
-instructie. Wanneer u de instructie break
in een lus gebruikt, instrueert deze instructie Flash de resterende inhoud van de lus over te slaan, de herhaling te beëindigen en de instructie na de lusinstructie uit te voeren. Als u de instructie break
in een switch
gebruikt, geeft deze aan Flash door de rest van de instructies in het blok case
over te slaan en naar de eerste instructie na de omsluitende switch
-instructie te springen.
De instructie break
slaat in geneste lussen alleen de rest van de huidige lus over en stapt niet uit de gehele reeks geneste lussen. Als u de gehele reeks geneste lussen wilt verlaten, gebruikt u label
of try..catch..finally
.
De instructie break
kan een optioneel label hebben. Dit moet overeenkomen met het label van een instructie buiten de lus. Het gebruik van een label dat niet overeenkomt met het label van een instructie buiten de lus, is een syntaxisfout. Gelabelde break
-instructies kunnen worden gebruikt om meerdere niveaus van geneste lusinstructies, switch
-instructies of block
-instructies te verlaten. Zie de vermelding voor de instructie label
voor een voorbeeld.
label:* — De naam van een label dat aan een instructie is gekoppeld. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt break gebruikt om een lus af te sluiten die anders oneindig zou zijn:
var i:int = 0; while (true) { trace(i); if (i >= 10) { break; // this will terminate/exit the loop } i++; } /* 0 1 2 3 4 5 6 7 8 9 10*/
Verwante API-elementen
case | instructie |
case jumpTarget: statements |
Definieert een sprongdoel voor de instructie switch
. Als de parameter jumpTarget
gelijk is aan de parameter expression
van de switch
-instructie die strikte gelijkheid gebruikt (===
), voert Flash Player de instructies in de parameter statements
uit totdat een break
-instructie of het einde van de switch
-instructie wordt aangetroffen.
Als u de instructie case
buiten een switch
-instructie gebruikt, genereert deze een fout en kan het script niet worden gecompileerd.
jumpTarget:* — Willekeurige expressie. | |
statements:* — Instructies die moeten worden uitgevoerd als jumpTarget overeenkomt met de voorwaardelijke expressie in de instructie switch. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld worden sprongdoelen voor de switch-instructie thisMonth gedefinieerd. Als thisMonth gelijk is aan de expressie in de instructie case, wordt de instructie uitgevoerd.
var thisMonth:int = new Date().getMonth(); switch (thisMonth) { case 0 : trace("January"); break; case 1 : trace("February"); break; case 5 : case 6 : case 7 : trace("Some summer month"); break; case 8 : trace("September"); break; default : trace("some other month"); }
Verwante API-elementen
class | trefwoorden voor definities |
[dynamic] [public | internal] [final] class className [ extends superClass ] [ implements interfaceName[, interfaceName... ] ] { // class definition here } |
Definieert een klasse waarmee u objecten kunt instantiëren die methoden en eigenschappen delen die u definieert. Wanneer u bijvoorbeeld een trackingsysteem voor facturen ontwikkelt, kunt u een klasse Invoice maken die alle methoden en eigenschappen definieert die elke factuur moet hebben. U gebruikt vervolgens de opdracht new Invoice()
om objecten Invoice te maken.
Elk ActionScript-bronbestand kan slechts één klasse bevatten die zichtbaar is voor andere bronbestanden of scripts. De extern zichtbare klasse kan een klasse van het type public of internal zijn en moet binnen een pakketinstructie worden gedefinieerd. Wanneer u andere klassen in hetzelfde bestand opneemt, moeten de klassen buiten de pakketinstructie en aan het einde van het bestand worden geplaatst.
De naam van de extern zichtbare klasse moet overeenkomen met de naam van het ActionScript-bronbestand dat de klasse bevat. De naam van het bronbestand moet de naam zijn van de klasse met de bestandsextensie .as. Wanneer u bijvoorbeeld een klasse Student benoemt, moet het bestand dat de klasse definieert de naam Student.as hebben.
Klassedefinities kunnen niet worden genest. U kunt dus geen extra klassen definiëren binnen een klassedefinitie.
U kunt een constructormethode definiëren. Dit is een methode die wordt uitgevoerd zodra een nieuwe instantie van de klasse wordt gemaakt. De naam van de constructormethode moet overeenkomen met de naam van de klasse. Wanneer u geen constructormethode definieert, wordt een standaardconstructor gemaakt.
Wanneer u wilt aangeven dat objecten bij uitvoering eigenschappen van het type dynamic kunnen toevoegen en gebruiken, plaatst u het gereserveerde woord dynamic
vóór de instructie class. Wanneer u wilt declareren dat een klasse een interface implementeert, gebruikt u het gereserveerde woord implements
. Wanneer u subklassen van een klasse wilt maken, gebruikt u het gereserveerde woord extends
. (Een klasse kan slechts één klasse uitbreiden, maar kan wel verschillende interfaces implementeren.) U kunt implements
en extends
in één instructie gebruiken. In de volgende voorbeelden ziet u hoe de trefwoorden implements
en extends
meestal worden gebruikt:
class C implements Interface_i, Interface_j // OK class C extends Class_d implements Interface_i, Interface_j // OK class C extends Class_d, Class_e // not OK
className:Class — De volledig gekwalificeerde naam van de klasse. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt een klasse met de naam Plant gemaakt. De constructor Plant heeft twee parameters.
// Filename Plant.as package { public class Plant { // Define property names and types private var _leafType:String; private var _bloomSeason:String; // Following line is constructor // because it has the same name as the class public function Plant(param_leafType:String, param_bloomSeason:String) { // Assign passed values to properties when new Plant object is created _leafType = param_leafType; _bloomSeason = param_bloomSeason; } // Create methods to return property values, because best practice // recommends against directly referencing a property of a class public function get leafType():String { return _leafType; } public function get bloomSeason():String { return _bloomSeason; } } }
var pineTree:Plant = new Plant("Evergreen", "N/A"); // Confirm parameters were passed correctly trace(pineTree.leafType); trace(pineTree.bloomSeason);
Verwante API-elementen
const | trefwoorden voor definities |
const identifier = value |
Geeft een constante op. Dit is een variabele waaraan maar eenmaal een waarde kan worden toegekend.
U kunt een constante strikt invoeren door een dubbele punt (:) toe te voegen, gevolgd door het gegevenstype.
Parametersidentifier:* — Een id voor de constante. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt getoond dat een fout optreedt wanneer u probeert meerdere keren een waarde aan een constante toe te wijzen.
const MIN_AGE:int = 21; MIN_AGE = 18; // error
const product_array:Array = new Array("Studio", "Dreamweaver", "Flash", "ColdFusion", "Contribute", "Breeze"); product_array.push("Flex"); // array operations are allowed product_array = ["Other"]; // assignment is an error trace(product_array);
Verwante API-elementen
continue | instructie |
continue [label] |
Springt over alle resterende instructies in de binnenste lus start en de volgende herhaling van de lus alsof het op normale wijze bij het einde was aangekomen. De instructie continue
heeft geen effect buiten een lus. Gebruik in geneste lussen de optionele parameter label
wanneer u meer dan alleen de binnenste lus wilt overslaan.
De instructie continue
kan een optioneel label hebben. Dit moet overeenkomen met het label van een instructie buiten de lus. Het gebruik van een label dat niet overeenkomt met het label van een instructie buiten de lus, is een syntaxisfout. Gelabelde instructies continue
kunnen worden gebruikt om meerdere niveaus van geneste lusinstructies over te slaan.
Voorbeeld
Hoe dit voorbeeld te gebruiken
In de volgende while-lus wordt de instructie continue gebruikt om de rest van de hoofdtekst van de lus over te slaan bij een veelvoud van 3 en naar het begin van de lus te springen, waar de voorwaarde wordt getest:
var i:int = 0; while (i < 10) { if (i % 3 == 0) { i++; continue; } trace(i); i++; }
for (var i:int = 0; i < 10; i++) { if (i % 3 == 0) { continue; } trace(i); }
Verwante API-elementen
default | instructie |
default: statements |
Definieert de standaard-case voor een instructie switch
. De instructies worden uitgevoerd als de parameter expression
van de instructie switch
(via de operator voor strikte gelijkheid [===
]) ongelijk is aan de expression
-parameters volgend op de case
-trefwoorden voor een bepaalde switch
-instructie.
Een switch
-instructie heeft geen default
-case-instructie nodig. De instructie default
hoeft niet de laatste in de lijst van case-instructies te zijn. Als u een default
-instructie buiten een switch
-instructie gebruikt, genereert deze een fout en kan het script niet worden gecompileerd.
statements:* — Willekeurige instructies. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
Als in het volgende voorbeeld de dag van de week zaterdag of zondag is, is geen van de case-instructies van toepassing en wordt dus de default-instructie uitgevoerd.
var dayOfWeek:int = new Date().getDay(); switch (dayOfWeek) { case 1 : trace("Monday"); break; case 2 : trace("Tuesday"); break; case 3 : trace("Wednesday"); break; case 4 : trace("Thursday"); break; case 5 : trace("Friday"); break; default : trace("Weekend"); }
Verwante API-elementen
default xml namespace | compileraanwijzingen |
|
Met de aanwijzing default xml namespace
wordt de standaardnaamruimte ingesteld die voor XML-objecten moet worden gebruikt.
Wanneer u default xml namespace
niet instelt, is de standaardnaamruimte de onbenoemde naamruimte (waarbij de URI op een lege tekenreeks is ingesteld). Het bereik van een declaratie default xml namespace
valt binnen een functieblok, zoals het bereik van een variabele.
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt getoond dat het bereik van default xml namespace een functieblok is:
var nsDefault1:Namespace = new Namespace("http://www.example.com/namespaces/"); default xml namespace = nsDefault1; var x1:XML =; trace("x1 ns: " + x1.namespace()); scopeCheck(); var x2:XML = ; trace("x2 ns: " + x2.namespace()); function scopeCheck(): void { var x3:XML = ; trace("x3 ns: " + x3.namespace()); var nsDefault2:Namespace = new Namespace("http://schemas.xmlsoap.org/soap/envelope/"); default xml namespace = nsDefault2; var x4:XML = ; trace("x4 ns: " + x4.namespace()); }
var nsDefault:Namespace = new Namespace("http://www.example.com/namespaces/"); default xml namespace = nsDefault; var x1:XML =; trace(x1.namespace()); // http://www.example.com/namespaces/ var x2:XML = ; trace(x2.namespace()); // http://www.w3.org/1999/XSL/Transform/ var x3:XML = ; trace(x3.namespace()); // http://www.example.com/namespaces/
Verwante API-elementen
do..while | instructie |
do { statement(s) } while (condition) |
Lijkt op een lus while
, met dit verschil dat de instructies eenmaal worden uitgevoerd voorafgaand aan de eerste evaluatie van de voorwaarde. De instructies worden hierna alleen uitgevoerd als de voorwaarde de waarde true
oplevert.
Een do..while
-lus zorgt ervoor dat de code binnen de lus ten minste één keer wordt uitgevoerd. Hoewel u dit ook met een while
-lus kunt doen (door een kopie van de instructies die moeten worden uitgevoerd voor het begin van de while
-lus te plaatsen), zijn veel programmeurs van mening dat do..while
-lussen gemakkelijker te lezen zijn.
Als de voorwaarde altijd true
oplevert, is de lus do..while
oneindig. Wanneer u een oneindige lus invoert, doen zich problemen voor met Flash Player en wordt uiteindelijk een foutmelding gegenereerd of loopt de speler vast. Gebruik waar mogelijk een lus for
als u weet hoeveel keer u de lus wilt uitvoeren. Hoewel for
-lussen gemakkelijker te lezen en op fouten te controleren zijn, kunnen ze do..while
lussen niet in alle omstandigheden vervangen.
condition:Boolean — De voorwaarde die moet worden geëvalueerd. De statement(s) in het codeblok do worden uitgevoerd zolang de parameter condition de waarde true oplevert. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt met een do..while-lus beoordeeld of een voorwaarde true is en wordt myVar gevolgd totdat myVar 5 of hoger is. Wanneer myVar 5 of hoger is, wordt de lus beëindigd.
var myVar:Number = 0; do { trace(myVar); myVar++; } while (myVar < 5); /* 0 1 2 3 4 */
Verwante API-elementen
dynamic | trefwoorden voor kenmerken |
dynamic class className { // class definition here } |
Geeft op dat instanties van een klasse dynamische eigenschappen kunnen bezitten die bij uitvoering worden toegevoegd. Wanneer u het kenmerk dynamic
voor een klasse gebruikt, kunt u bij uitvoering eigenschappen aan instanties van die klasse toevoegen. Klassen die niet zijn gemarkeerd als dynamic
, worden als verzegeld beschouwd, zodat geen eigenschappen aan instanties van de klasse kunnen worden toegevoegd.
Wanneer de klasse is verzegeld (niet dynamisch), resulteren pogingen tot het ophalen of instellen van eigenschappen van klasse-instanties in een fout. Wanneer u de compiler op strikte modus instelt en het gegevenstype opgeeft wanneer u instanties maakt, wordt bij pogingen om eigenschappen aan verzegelde objecten toe te voegen een compileerfout gegenereerd; anders treedt een fout bij uitvoering op.
Het kenmerk dynamic
wordt niet overerfd door subklassen. Wanneer u een klasse van het type dynamic uitbreidt, is de subklasse alleen van het type dynamic wanneer u de subklasse met het kenmerk dynamic
declareert.
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld worden twee klassen gemaakt, een klasse van het type dynamic met de naam Expando en een klasse van het type sealed met de naam Sealed, die in de volgende voorbeelden worden gebruikt.
package { dynamic class Expando { } class Sealed { } }
var myExpando:Expando = new Expando(); myExpando.prop1 = "new"; trace(myExpando.prop1); // new
var mySealed:Sealed = new Sealed(); mySealed.prop1 = "newer"; // error
Verwante API-elementen
else | instructie |
if (condition) { // statement(s) } else { // statement(s) } |
Geeft op welke instructies moeten worden uitgevoerd als de voorwaarde in de instructie if
de waarde false
retourneert. De accolades ({}
) rondom de instructies die moeten worden uitgevoerd door de instructie else
zijn niet nodig als slechts één instructie wordt uitgevoerd.
condition:Boolean — Een expressie die true of false oplevert. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt met de voorwaarde else gecontroleerd of de variabele age_txt groter of kleiner is dan 18:
if (age_txt.text>=18) { trace("welcome, user"); } else { trace("sorry, junior"); userObject.minor = true; userObject.accessAllowed = false; }
if (age_txt.text>18) { trace("welcome, user"); } else trace("sorry, junior");
if (score_txt.text>90) { trace("A"); } else if (score_txt.text>75) { trace("B"); } else if (score_txt.text>60) { trace("C"); } else { trace("F"); }
Verwante API-elementen
extends | trefwoorden voor definities |
class className extends otherClassName {} interface interfaceName extends otherInterfaceName {} |
Definieert een klasse die een subklasse van een andere klasse is. De subklasse overerft alle methoden, eigenschappen, functies, enzovoort, die in de superklasse zijn gedefinieerd. Klassen die zijn gemarkeerd als final
, kunnen niet worden uitgebreid.
U kunt ook het gereserveerde woord extends
gebruiken om een interface uit te breiden. Een interface die een andere interface uitbreidt, omvat alle methodedeclaraties van de oorspronkelijke interface.
className:Class — De naam van de klasse die u definieert. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld breidt de klasse Car de klasse Vehicle uit, zodat alle methoden, eigenschappen en functies ervan worden overerfd. Wanneer uw script een object Car instantieert, kunnen zowel de methoden van de klasse Car als van de klasse Vehicle worden gebruikt. In het volgende voorbeeld wordt de inhoud getoond van een bestand met de naam Vehicle.as dat de klasse Vehicle definieert:
package { class Vehicle { var numDoors:Number; var color:String; public function Vehicle(param_numDoors:Number = 2, param_color:String = null) { numDoors = param_numDoors; color = param_color; } public function start():void { trace("[Vehicle] start"); } public function stop():void { trace("[Vehicle] stop"); } public function reverse():void { trace("[Vehicle] reverse"); } } }
package { public class Car extends Vehicle { var fullSizeSpare:Boolean; public function Car(param_numDoors:Number, param_color:String, param_fullSizeSpare:Boolean) { numDoors = param_numDoors; color = param_color; fullSizeSpare = param_fullSizeSpare; } public function activateCarAlarm():void { trace("[Car] activateCarAlarm"); } public override function stop():void { trace("[Car] stop with antilock brakes"); } } }
var myNewCar:Car = new Car(2, "Red", true); myNewCar.start(); // [Vehicle] start myNewCar.stop(); // [Car] stop with anti-lock brakes myNewCar.activateCarAlarm(); // [Car] activateCarAlarm
package { class Truck extends Vehicle { var numWheels:Number; public function Truck(param_numDoors:Number, param_color:String, param_numWheels:Number) { super(param_numDoors, param_color); numWheels = param_numWheels; } public override function reverse():void { beep(); super.reverse(); } public function beep():void { trace("[Truck] make beeping sound"); } } }
var myTruck:Truck = new Truck(2, "White", 18); myTruck.reverse(); // [Truck] make beeping sound [Vehicle] reverse myTruck.stop(); // [Vehicle] stop
Verwante API-elementen
false | trefwoorden voor primaire expressies |
false |
Booleaanse waarde die false vertegenwoordigt. Een Booleaanse waarde is true
of false
; het tegengestelde van false
is true
.
Wanneer false
via automatische gegevenstypering in een getal wordt omgezet, wordt de waarde 0
; wanneer false
in een tekenreeks wordt omgezet, is het resultaat "false"
.
Opmerking: de tekenreeks "false"
wordt omgezet in de Booleaanse waarde true
.
Voorbeeld
Hoe dit voorbeeld te gebruiken
In dit voorbeeld ziet u hoe false via automatische gegevenstypering in een getal en in een tekenreeks wordt omgezet:
var bool1:Boolean = Boolean(false); // converts it to the number 0 trace(1 + bool1); // outputs 1 // converts it to a string trace("String: " + bool1); // outputs String: false
trace(Boolean("false")); // true if ("false") { trace("condition expression evaluated to true"); } else { trace("condition expression evaluated to false"); } // condition expression evaluated to true
Verwante API-elementen
final | trefwoorden voor kenmerken |
final function methodName() { // your statements here } final class className {} |
Geeft op dat een methode niet kan worden overschreven of dat een klasse niet kan worden uitgebreid. Een poging tot het overschrijven van een methode of tot het uitbreiden van een klasse die als final
is gemarkeerd, resulteert in een fout.
methodName:Function — De naam van de methode die niet kan worden overschreven. | |
className:Class — De naam van de klasse die niet kan worden uitgebreid. |
Verwante API-elementen
flash_proxy | naamruimten |
Definieert de methoden van de klasse Proxy. De methoden van de klasse Proxy bevinden zich in hun eigen naamruimte om naamconflicten te vermijden in situaties waarbij de Proxy-subklasse instantiemethodenamen bevat die overeenkomen met namen van methoden van de klasse Proxy.
ParametersVerwante API-elementen
for | instructie |
for ([init]; [condition]; [next]) { // statement(s) } |
Evalueert de expressie init
(initialiseren) eenmaal en start vervolgens een herhalingsreeks. De herhalingsreeks begint door de expressie condition
te evalueren. Als de expressie condition
de waarde true
oplevert, wordt statement
uitgevoerd en wordt next
geëvalueerd. De herhalingsreeks begint vervolgens opnieuw met de evaluatie van de expressie condition
.
De accolades ({}
) rondom het blok instructies die door de instructie for
moeten worden uitgevoerd, zijn niet nodig als slechts één instructie wordt uitgevoerd.
init — Een optionele expressie die moet worden geëvalueerd voordat de herhalingsreeks begint. Dit is doorgaans een toewijzingsexpressie. Een instructie var is ook toegestaan voor deze parameter. | |
condition — Een optionele expressie die moet worden geëvalueerd voordat de herhalingsreeks begint. Dit is doorgaans een vergelijkende expressie. Als de expressie true oplevert, worden de aan de instructie for gekoppelde instructies uitgevoerd. | |
next — Een optionele expressie die moet worden geëvalueerd na de herhalingsreeks. Dit is doorgaans een verhogende of verlagende expressie. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt for gebruikt om de elementen in een array toe te voegen.
var my_array:Array = new Array(); for (var i:Number = 0; i < 10; i++) { my_array[i] = (i + 5) * 10; } trace(my_array); // 50,60,70,80,90,100,110,120,130,140
var sum:Number = 0; for (var i:Number = 1; i <= 100; i++) { sum += i; } trace(sum); // 5050
var sum:Number = 0; for (var i:Number = 1; i <= 100; i++) sum += i; trace(sum); // 5050
Verwante API-elementen
for..in | instructie |
for (variableIterant:String in object){ // statement(s) } |
Doorloopt de dynamische eigenschappen van een object of elementen in een array en voert de statement
uit voor elke eigenschap of elk element. Objecteigenschappen worden niet in een bepaalde volgorde opgeslagen en kunnen dus in schijnbaar willekeurige volgorde worden weergegeven. Vaste eigenschappen, zoals variabelen en methoden die in een klasse zijn gedefinieerd, worden niet opgesomd door de instructie for..in
. Voor een lijst van vaste eigenschappen gebruikt u de functie describeType()
in het pakket flash.utils.
variableIterant:String — De naam van een variabele die als de herhaler fungeert, waarbij naar elke eigenschap van een object of naar een element in een array wordt verwezen. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt for..in gebruikt om de eigenschappen van een object te doorlopen:
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; for (var prop in myObject) { trace("myObject."+prop+" = "+myObject[prop]); } /* myObject.firstName = Tara myObject.age = 27 myObject.city = San Francisco */
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; for (var name in myObject) { if (typeof (myObject[name]) == "string") { trace("I have a string property named "+name); } } /* I have a string property named city I have a string property named firstName */
Verwante API-elementen
for each..in | instructie |
for each (variableIterant in object){ // statement(s) } |
Doorloopt de items van een verzameling en voert voor elk item statement
uit. De instructie for each..in
, die als onderdeel van de uitbreidingen van de E4X-taal is geïntroduceerd, kan niet alleen voor XML-objecten worden gebruikt maar ook voor objecten en arrays. De instructie for each..in
doorloopt alleen de dynamische eigenschappen van een object, niet de vaste eigenschappen. Een vaste eigenschap is een eigenschap die is gedefinieerd als deel van een klassedefinitie. Als u de instructie for each..in
met een instantie van een door de gebruiker gedefinieerde klasse wilt gebruiken, moet u de klasse met het kenmerk dynamic
declareren.
In tegenstelling tot de instructie for..in
, doorloopt de instructie for each..in
de waarden van de eigenschappen van een object en niet de eigenschapsnamen.
variableIterant:* — De naam van een variabele die als de herhaler fungeert, waarbij naar het item in een verzameling wordt verwezen. | |
object:Object — De naam van een verzameling die moet worden doorlopen. De verzameling kan een XML-object, een algemeen object of een array zijn. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt for each..in gebruikt om de waarden van de eigenschappen van een object te doorlopen:
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; for each (var item in myObject) { trace(item); } /* Tara 27 San Francisco */
var myArray:Array = new Array("one", "two", "three"); for each(var item in myArray) trace(item); /* one two three */
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; for each (var item in myObject) { if (item is String) { trace("I have a string property with value " + item); } } /* I have a string property with value Tara I have a string property with value San Francisco */
var doc:XML =Hello
Hola
Bonjour
; for each (var item in doc.p) { trace(item); } /* Hello Hola Bonjour */
function | trefwoorden voor definities |
function functionName([parameter0, parameter1,...parameterN]) : returnType{ // statement(s) } var functionName:Function = function ([parameter0, parameter1,...parameterN]) : returnType{ // statement(s) } |
Bestaat uit een set instructies die u definieert om een bepaalde taak uit te voeren. U kunt een functie op één locatie definiëren en deze vanuit verschillende scripts in een SWF-bestand gebruiken of aanroepen . Wanneer u een functie definieert, kunt u ook parameters voor de functie opgeven. Parameters worden gebruikt als houders voor waarden waarop de functie wordt uitgevoerd. U kunt telkens wanneer u een functie aanroept verschillende parameters doorgeven, zodat de functie in verschillende situaties opnieuw kan worden gebruikt.
Gebruik de instructie return
in het blok statement(s)
van een functie om te zorgen dat de functie een waarde genereert of retourneert .
Gebruik 1: u kunt het trefwoord function
gebruiken om een functie met de opgegeven functienaam, parameters en instructies te definiëren. Wanneer een script een functie aanroept, worden de instructies in de functiedefinitie uitgevoerd. Vooruit verwijzen is toegestaan; een functie kan binnen hetzelfde script worden gedeclareerd nadat deze is aangeroepen. Een functiedefinitie vervangt een vorige definitie van dezelfde functie. U kunt deze syntaxis overal waar een instructie is toegestaan gebruiken.
Gebruik 2: u kunt function
ook gebruiken om een anonieme functie te maken en een verwijzing daarnaar te retourneren. Deze syntaxis wordt in expressies gebruikt en is met name nuttig bij het installeren van methoden in objecten.
U kunt het object arguments
in de functiedefinitie gebruiken voor extra functionaliteit. Het object arguments
wordt vaak gebruikt bij het maken van een functie die een variabel aantal parameters accepteert en bij het maken van een recursieve anonieme functie.
functionName:Function — De naam van de nieuwe functie. | |
returnType:* — Het gegevenstype van de geretourneerde waarde. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt de functie sqr gedefinieerd die als waarde het kwadraat van een getal retourneert:
function sqr(xNum:Number) { return Math.pow(xNum, 2); } var yNum:Number = sqr(3); trace(yNum); // 9
var yNum:Number = sqr(3); trace(yNum); // 9 function sqr(xNum:Number) { return Math.pow(xNum, 2); }
Verwante API-elementen
get | trefwoorden voor definities |
function get property() : returnType{ // your statements here } |
Definieert een getter, een methode die als een eigenschap kan worden gelezen. Een getter is een speciale functie die de waarde retourneert van een eigenschap die met het trefwoord var
of const
is gedeclareerd. In tegenstelling tot andere methoden wordt een getter aangeroepen zonder haakjes ( ()
), zodat de getter een variabele lijkt.
Met behulp van getters kunt u informatie verbergen door een openbare interface voor een eigenschap van het type private te maken. Het voordeel van het verbergen van informatie is dat de openbare interface gelijk blijft ook al verandert de onderliggende implementatie van de eigenschap van het type private.
Een ander voordeel van getters is dat ze kunnen worden overschreven in subklassen, terwijl dat niet mogelijk is bij eigenschappen die met var
of const
worden gedeclareerd.
Een getter kan met een setter worden gecombineerd om een lezen-schrijven eigenschap te maken. Wanneer u een alleen-lezen eigenschap wilt maken, maakt u een getter zonder overeenkomende setter. Wanneer u een alleen-schrijven eigenschap wilt maken, maakt u een setter zonder overeenkomende getter.
Parametersproperty:* — De id voor de eigenschap die get benadert; deze waarde moet gelijk zijn aan de waarde die wordt gebruikt in de overeenkomende opdracht set. | |
returnType:* — Het gegevenstype van de geretourneerde waarde. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt een klasse Team gedefinieerd. De klasse Team bestaat uit methoden getter/setter waarmee u eigenschappen binnen de klasse kunt ophalen en instellen.
package { public class Team { var teamName:String; var teamCode:String; var teamPlayers:Array = new Array(); public function Team(param_name:String, param_code:String) { teamName = param_name; teamCode = param_code; } public function get name():String { return teamName; } public function set name(param_name:String):void { teamName = param_name; } } }
var giants:Team = new Team("San Fran", "SFO"); trace(giants.name); giants.name = "San Francisco"; trace(giants.name); /* San Fran San Francisco */
Verwante API-elementen
if | instructie |
if (condition) { // statement(s) } |
Evalueert een voorwaarde om te bepalen welke instructie vervolgens moet worden uitgevoerd. Als de voorwaarde true
is, voert Flash Player de instructies uit die tussen accolades ({}
) op de voorwaarde volgen. Wanneer de voorwaarde false
is, slaat Flash de instructies binnen de accolades over en voert de instructies uit die op de accolades volgen. Gebruik de instructie if
samen met de instructie else
om vertakkende logica in uw scripts te maken.
De accolades ({}
) rondom de instructies die moeten worden uitgevoerd door de instructie if
zijn niet nodig als slechts één instructie wordt uitgevoerd.
condition:Boolean — Een expressie die true of false oplevert. |
Verwante API-elementen
implements | trefwoorden voor definities |
myClass implements interface01 [, interface02 , ...] |
Geeft op dat een klasse een of meer interfaces implementeert. Wanneer een klasse een interface implementeert, moet de klasse alle methoden definiëren die in de interface zijn gedeclareerd. Elke instantie van een klasse die een interface implementeert, wordt beschouwd als lid van het gegevenstype dat door de interface is gedefinieerd. Als gevolg hiervan retourneert de operator is
de waarde true
als de klasse-instantie de eerste operand is en de interface de tweede. Bovendien werkt omzetting van en naar het gegevenstype dat door de interface is gedefinieerd.
Verwante API-elementen
import | compileraanwijzingen |
import packageName.className import packageName.* |
Maakt klassen en pakketten beschikbaar voor uw code. Wanneer u bijvoorbeeld de klasse flash.display.Sprite in een script wilt gebruiken, moet u deze importeren. Deze vereiste verschilt van lagere versies van ActionScript, waar de aanwijzing import
optioneel was.
Na gebruik van de aanwijzing import
kunt u de volledige klassenaam gebruiken, inclusief de pakketnaam, of alleen de naam van de klasse.
import flash.display.Sprite; // name of class only var mySprite:Sprite = new Sprite(); // full class name var mySprite:flash.display.Sprite = new flash.display.Sprite();
Wanneer het pakket verschillende klassebestanden bevat waartoe u toegang wilt hebben, kunt u ze allemaal importeren in een enkele instructie, zoals in het volgende voorbeeld wordt getoond:
import flash.display.*;
Met de aanwijzing import
worden alleen de klassen, functies en variabelen geïmporteerd die zich op het bovenste niveau van het geïmporteerde pakket bevinden. Geneste pakketten moeten expliciet worden geïmporteerd.
Wanneer u een klasse importeert maar niet gebruikt in uw script, wordt de klasse niet als onderdeel van het SWF-bestand geëxporteerd. Dit betekent dat u grote pakketten kunt importeren zonder dat u zich zorgen hoeft te maken over de grootte van het SWF-bestand; de bytecode die aan een klasse is gekoppeld, wordt alleen in een SWF-bestand opgenomen wanneer die klasse daadwerkelijk wordt gebruikt. Een nadeel van het importeren van klassen die u niet nodig hebt, is dat de kans op naamconflicten toeneemt.
// On Frame 1 of a FLA: import adobe.example.*; var myFoo:foo = new foo();Parameters
packageName:* — De naam van een pakket dat u in een afzonderlijk klassebestand hebt gedefinieerd. | |
className:Class — De naam van een klasse die u in een afzonderlijk klassebestand hebt gedefinieerd. |
include | compileraanwijzingen |
include "[path]filename.as" |
Zorgt dat de inhoud van het opgegeven bestand wordt opgenomen alsof de opdrachten in het bestand deel zijn van het aanroepende script. De compileraanwijzing include
wordt tijdens de compilatie aangeroepen. Daarom moet u het bestand opslaan wanneer u wijzigingen in een opgenomen bestand doorvoert en de SWF-bestanden die dit bestand gebruiken, opnieuw compileren.
interface | trefwoorden voor definities |
interface InterfaceName [extends InterfaceName ] {} |
Definieert een interface. Interfaces zijn gegevenstypen die een set methoden definiëren. De methoden moeten worden gedefinieerd door een klasse die de interface implementeert.
Een interface is vergelijkbaar met een klasse, maar met de volgende belangrijke verschillen:
- Interfaces bevatten slechts declaraties van methoden, niet hun implementatie. Met andere woorden, elke klasse die een interface implementeert, moet een implementatie bieden voor elke methode die in de interface wordt gedeclareerd.
- Definities van interfacemethoden kunnen geen kenmerken zoals
public
ofprivate
hebben, maar geïmplementeerde methoden moeten alspublic
worden gemarkeerd in de definitie van de klasse die de interface implementeert. - Er kunnen meerdere interfaces worden overgeërfd door een interface via de instructie
extends
, of door een klasse via de instructieimplements
.
In tegenstelling tot ActionScript 2.0 staat ActionScript 3.0 het gebruik van methoden getter en setter in interfacedefinities toe.
ParametersVerwante API-elementen
internal | trefwoorden voor kenmerken |
[internal] var varName [internal] const kName [internal] function functionName() { // your statements here } [internal] class className{ // your statements here } [internal] namespace nsName |
Geeft op dat een klasse, variabele, constante of functie beschikbaar is voor elke aanroeper in hetzelfde pakket. Klassen, eigenschappen en methoden behoren standaard tot de naamruimte internal
.
className:Class — De naam van de klasse die u als type internal wilt opgeven. | |
varName:* — De naam van de variabele die u als type internal wilt opgeven. U kunt het kenmerk internal toepassen, ongeacht of de variabele wel of geen deel uitmaakt van een klasse. | |
kName:* — De naam van de constante die u als type internal wilt opgeven. U kunt het kenmerk internal toepassen, ongeacht of de constante wel of geen deel uitmaakt van een klasse. | |
functionName:Function — De naam van de functie of methode die u als type internal wilt opgeven. U kunt het kenmerk internal toepassen, ongeacht of de functie wel of geen deel uitmaakt van een klasse. | |
nsName:Namespace — De naam van de naamruimte die u als type internal wilt opgeven. U kunt het kenmerk internal toepassen, ongeacht of de naamruimte wel of geen deel uitmaakt van een klasse. |
Verwante API-elementen
label | instructie |
label: statement label: { statements } |
Koppelt een instructie aan een id waarnaar kan worden verwezen met break
of continue
. In geneste lussen kan een instructie break
of continue
die niet naar een label verwijst, alleen het restant van de huidige lus overslaan, niet de gehele reeks lussen. Als de instructie die de gehele reeks lussen definieert echter een gekoppeld label heeft, kan een instructie break
of continue
de gehele reeks lussen overslaan door naar dat label te verwijzen.
Met labels kunt u ook uit een blokinstructie breken. U kunt een instructie break
die niet naar een label verwijst niet binnen een blokinstructie plaatsen, tenzij de blokinstructie deel uitmaakt van een lus. Wanneer de blokinstructie een gekoppeld label heeft, kunt u een instructie break
plaatsen die verwijst naar dat label binnen de blokinstructie.
label:* — Een geldige id die aan een instructie moet worden gekoppeld. | |
statements:* — Instructie die aan het label moet worden gekoppeld. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt getoond hoe u een label met een geneste lus kunt gebruiken om uit de gehele serie lussen te breken. In de code wordt een geneste lus gebruikt om een lijst getallen van 0 tot en met 99 te genereren. De instructie break wordt uitgevoerd vlak voordat de teller 80 bereikt. Als in de instructie break het label outerLoop niet werd gebruikt, zou de code alleen het restant van de huidige lus overslaan en zou de code verdergaan met het uitvoeren van de getallen vanaf 90 tot en met 99. Aangezien echter het label outerLoop is gebruikt, slaat de instructie break het restant van de gehele reeks lussen over en is 79 het laatste getal dat wordt uitgevoerd.
outerLoop: for (var i:int = 0; i < 10; i++) { for (var j:int = 0; j < 10; j++) { if ( (i == 8) && (j == 0)) { break outerLoop; } trace(10 * i + j); } } /* 1 2 ... 79 */
foo: { trace("a"); break foo; trace("b"); } // a
Verwante API-elementen
namespace | trefwoorden voor definities |
namespace name [= uri] |
Hiermee kunt u de zichtbaarheid van definities beheren. Vooraf gedefinieerde naamruimten zijn public
, private
, protected
en internal
.
Met de volgende stappen wordt getoond hoe u een naamruimte maakt, toepast en ernaar verwijst:
- Definieer eerst de aangepaste naamruimte met het gereserveerde woord
namespace
. Met de codenamespace version1
wordt bijvoorbeeld een naamruimte met de naamversion1
gemaakt. - Pas de naamruimte vervolgens toe op een eigenschap of methode door de aangepaste naamruimte in de declaratie van de eigenschap of methode te gebruiken. Met de code
version1 myProperty:String
wordt bijvoorbeeld een eigenschap met de naammyProperty
gemaakt die deel uitmaakt van de naamruimteversion1
. - Verwijs daarna naar de naamruimte met het gereserveerde woord
use
of door de naamruimte als voorvoegsel van een id te gebruiken. De codeuse namespace version1;
verwijst bijvoorbeeld naar de naamruimteversion1
voor volgende regels code en de codeversion1::myProperty
verwijst naar de naamruimteversion1
voor de eigenschapmyProperty
.
name:Namespace — De naam van de naamruimte, die elke geldige id kan zijn. | |
uri:String — De URI (Uniform Resource Identifier) van de naamruimte. Dit is een optionele parameter. |
Verwante API-elementen
native | trefwoorden voor kenmerken |
native function functionName(); class className { native function methodName(); } |
Geeft op dat een functie of methode door Flash Player in native code wordt geïmplementeerd. Flash Player gebruikt het gereserveerde woord native
intern om functies en methoden in de ActionScript-API (programmeerinterface voor toepassingen) te declareren. Dit gereserveerde woord kan niet in uw eigen code worden gebruikt.
null | trefwoorden voor primaire expressies |
null |
Een speciale waarde die aan variabelen kan worden toegewezen of door een functie kan worden geretourneerd wanneer geen gegevens zijn opgegeven. U kunt null
gebruiken om meerdere waarden te vertegenwoordigen die ontbreken of geen gedefinieerd gegevenstype hebben.
De waarde null
mag niet worden verward met de speciale waarde undefined
. Wanneer null
en undefined
met de operator ==
(gelijk aan) worden vergeleken, worden ze als gelijk geïnterpreteerd. Wanneer null
en undefined
echter met de operator ===
(strikt gelijk aan) worden vergeleken, worden ze niet als gelijk geïnterpreteerd.
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld worden de eerste zes waarden van een geïndexeerde array gecontroleerd en wordt een bericht gegenereerd wanneer geen waarde is ingesteld (wanneer value == null):
var testArray:Array = new Array(); testArray[0] = "fee"; testArray[1] = "fi"; testArray[4] = "foo"; for (i = 0; i < 6; i++) { if (testArray[i] == null) { trace("testArray[" + i + "] == null"); } } /* testArray[2] == null testArray[3] == null testArray[5] == null */
Verwante API-elementen
object_proxy | naamruimten |
Definieert de methoden van de klasse ObjectProxy. De methoden van de klasse ObjectProxy bevinden zich in hun eigen naamruimte om naamconflicten te vermijden in situaties waarbij de Proxy-subklasse instantiemethodenamen bevat die overeenkomen met namen van methoden van de klasse Proxy.
Parametersoverride | trefwoorden voor kenmerken |
override function name() { // your statements here } |
Geeft op dat een methode een overerfde methode vervangt. Als u een overgeërfde methode wilt overschrijven, moet u het kenmerk override
gebruiken en ervoor zorgen dat de naam, het kenmerk van de klasseneigenschap, het aantal en het type parameters, en het retourneringstype exact overeenkomen. Er treedt een fout op wanneer u probeert een methode te overschrijven zonder het kenmerk override
te gebruiken. Er treedt ook een fout op wanneer u het kenmerk override
gebruikt terwijl de methode geen overeenkomende overerfde methode heeft.
U kunt het kenmerk override
niet gebruiken voor:
- Variabelen
- Constanten
- Methoden van het type static
- Methoden die niet zijn overerfd.
- Methoden die een interfacemethode implementeren.
- Overerfde methoden die zijn gemarkeerd als
final
in de superklasse.
Hoewel u een eigenschap die is gedeclareerd met var
of const
niet kunt overschrijven, kunt u vergelijkbare functionaliteit verkrijgen door van de basisklasse-eigenschap een getter-setter te maken en de methoden te overschrijven die met get
en set
zijn gedefinieerd.
name:Function — De naam van de methode die moet worden overschreven. |
Verwante API-elementen
package | trefwoorden voor definities |
package packageName { class someClassName { } } |
Hiermee kunt u uw code in discrete groepen ordenen die door andere scripts kunnen worden geïmporteerd. U moet het gereserveerde woord package
gebruiken om aan te geven dat een klasse lid is van een pakket.
packageName:* — De naam van het pakket. |
Verwante API-elementen
private | trefwoorden voor kenmerken |
class className{ private var varName; private const kName; private function methodName() { // your statements here } private namespace nsName; } |
Geeft op dat een variabele, constante of methode alleen beschikbaar is voor de klasse die deze declareert of definieert. In tegenstelling tot ActionScript 2.0 biedt private
in ActionScript 3.0 geen toegang meer tot subklassen. Bovendien legt private
zowel tijdens bij compileren als bij uitvoering toegangsbeperkingen op. Een variabele of een functie is standaard beschikbaar voor elke aanroeper in hetzelfde pakket. Gebruik dit gereserveerde woord wanneer u de toegang tot een variabele of een functie wilt beperken.
U kunt dit gereserveerde woord alleen in klassedefinities gebruiken, niet in interfacedefinities. U kunt private
niet toepassen op een klasse of op andere definities op pakketniveau.
varName:* — De naam van de variabele die u als type private wilt opgeven. U kunt het kenmerk private alleen toepassen wanneer de variabele zich in een klasse bevindt. | |
kName:* — De naam van de constante die u als type private wilt opgeven. U kunt het kenmerk private alleen toepassen wanneer de constante zich in een klasse bevindt. | |
methodName:Function — De naam van de methode die u als type private wilt opgeven. U kunt het kenmerk private alleen toepassen wanneer de methode zich in een klasse bevindt. | |
nsName:Namespace — De naam van de naamruimte die u als type private wilt opgeven. U kunt het kenmerk private alleen toepassen wanneer de naamruimte zich in een klasse bevindt. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt getoond hoe bepaalde eigenschappen binnen een klasse kunnen worden verborgen met het gereserveerde woord private.
class A { private var alpha:String = "visible only inside class A"; public var beta:String = "visible everywhere"; } class B extends A { function B() { alpha = "Access attempt from subclass"; // error } }
Verwante API-elementen
protected | trefwoorden voor kenmerken |
class className{ protected var varName; protected const kName; protected function methodName() { // your statements here } protected namespace nsName; } |
Geeft op dat een variabele, constante, methode of naamruimte alleen beschikbaar is voor de klasse die deze declareert of definieert en voor subklassen van die klasse. De definitie van protected
in ActionScript 3.0 is vergelijkbaar met de definitie van de ActionScript 2.0-versie van private
, met dit verschil dat protected
zowel tijdens het compileren als bij uitvoering toegangsbeperkingen oplegt. Een variabele of een functie is standaard beschikbaar voor elke aanroeper in hetzelfde pakket. Gebruik dit gereserveerde woord wanneer u de toegang tot een variabele of een functie wilt beperken.
U kunt dit gereserveerde woord alleen in klassedefinities gebruiken, niet in interfacedefinities. U kunt private
niet toepassen op een klasse of op andere definities op pakketniveau.
De definitie van protected
in ActionScript 3.0 brengt meer beperkingen met zich mee dan die van protected
in de programmeertaal Java. In ActionScript 3.0 beperkt protected
de toegang exclusief tot subklassen, terwijl in Java protected
ook toegang tot klassen binnen hetzelfde pakket toestaat. Als een klasse met de naam Base
bijvoorbeeld een eigenschap bevat die als protected
is gemarkeerd, krijgen in ActionScript 3.0 alleen klassen die Base uitbreiden toegang tot de eigenschap van het type protected. In Java hebben alle klassen binnen hetzelfde pakket als Base toegang tot de eigenschap van het type protected, zelfs wanneer de klasse geen subklasse van Base is.
varName:* — De naam van de variabele die u als type protected wilt opgeven. U kunt het kenmerk protected alleen toepassen als de variabele zich in een klasse bevindt. | |
kName:* — De naam van de constante die u als type protected wilt opgeven. U kunt het kenmerk protected alleen toepassen als de constante zich in een klasse bevindt. | |
methodName:Function — De naam van de methode die u als type protected wilt opgeven. U kunt het kenmerk protected alleen toepassen als de methode zich in een klasse bevindt. | |
nsName:Namespace — De naam van de naamruimte die u als type protected wilt opgeven. U kunt het kenmerk protected alleen toepassen als de naamruimte zich in een klasse bevindt. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt een klassevariabele van het type protected in klasse A gemaakt en wordt in klasse B toegang tot die variabele verkregen, aangezien klasse B een subklasse is van klasse A.
class A { private var alpha:String = "visible only inside class A"; protected var beta:String = "visible inside class A and its subclasses"; } class B extends A { public function B() { beta = "Access attempt from subclass succeeded"; trace(beta); // Access attempt from subclass succeeded } }
Verwante API-elementen
public | trefwoorden voor kenmerken |
public var varName public const kName public function functionName() { // your statements here } public class className { // your statements here } public namespace nsName |
Geeft op dat een klasse, variabele, constante of methode beschikbaar is voor elke aanroeper. Klassen, variabelen en methoden zijn standaard van het type internal. Dit betekent dat deze alleen zichtbaar zijn binnen het huidige pakket. Wanneer u een klasse, variabele of methode voor alle aanroepers zichtbaar wilt maken, moet u het kenmerk public
gebruiken.
className:Class — De naam van de klasse die u als type public wilt opgeven. | |
varName:* — De naam van de variabele die u als type public wilt opgeven. U kunt het kenmerk public toepassen, of de variabele nu onderdeel is van een klasse of niet. | |
kName:* — De naam van de constante die u als type public wilt opgeven. U kunt het kenmerk public toepassen, of de constante nu onderdeel is van een klasse of niet. | |
functionName:Function — De naam van de functie of methode die u als type public wilt opgeven. U kunt het kenmerk public toepassen, of de functie nu onderdeel is van een klasse of niet. | |
nsName:Namespace — De naam van de naamruimte die u als type public wilt opgeven. U kunt het kenmerk public toepassen, of de naamruimte nu onderdeel is van een klasse of niet. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt getoond hoe u variabelen van het type public in een klassebestand kunt gebruiken:
class User { public var age:Number; public var fname:String; } // end of class User definition var jimmy:User = new User(); jimmy.age = 27; jimmy.fname = "jimmy"; trace(jimmy.age, jimmy.fname); // 27 jimmy
Verwante API-elementen
return | instructie |
function functionName () { return [expression] } |
Hiermee wordt bij uitvoering onmiddellijk naar de aanroepende functie teruggekeerd. Wanneer de instructie return
door een expressie wordt gevolgd, wordt de expressie geëvalueerd en het resultaat geretourneerd.
Wanneer een functiedefinitie een retourneringstype bevat, moet de instructie return
door een expressie worden gevolgd. Als er geen retourneringstype is opgegeven en alleen de instructie return
wordt gebruikt, wordt undefined
geretourneerd.
U kunt niet meerdere waarden retourneren. Wanneer u dit probeert, wordt alleen de laatste waarde geretourneerd. In het volgende voorbeeld wordt c
geretourneerd:
return a, b, c ;
Wanneer u meerdere waarden wilt retourneren, gebruikt u een array of object.
Parametersexpression:* — Een expressie die moet worden geëvalueerd en geretourneerd als een waarde van de functie. Deze parameter is optioneel. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt de instructie return binnen de hoofdtekst van de functie sum() gebruikt om de opgetelde waarde van de drie parameters te retourneren. Op de volgende coderegel wordt sum() aangeroepen en wordt de geretourneerde waarde aan de variabele newValue toegewezen.
function sum(a:Number, b:Number, c:Number):Number { return (a + b + c); } var newValue:Number = sum(4, 32, 78); trace(newValue); // 114
Verwante API-elementen
set | trefwoorden voor definities |
function set property(newValue:*) : void{ // your statements here } |
Definieert een setter. Dit is een methode die in de openbare interface als eigenschap wordt weergegeven. Een setter is een speciale methode die de waarde instelt van een eigenschap die met het gereserveerde woord var
is gedeclareerd. In tegenstelling tot andere methoden wordt een setter aangeroepen zonder haakjes ( ()
), zodat de setter een variabele lijkt.
Met behulp van setters kunt u informatie verbergen door een openbare interface voor een eigenschap van het type private te maken. Het voordeel van het verbergen van informatie is dat de openbare interface gelijk blijft ook al verandert de onderliggende implementatie van de eigenschap van het type private.
Een ander voordeel van setters is dat deze kunnen worden overschreven in subklassen, terwijl dat niet mogelijk is bij eigenschappen die met var
worden gedeclareerd.
Het retourneringstype van een setter moet void
of niet opgegeven zijn.
Een setter kan met een getter worden gecombineerd om een lezen-schrijven eigenschap te maken. Wanneer u een alleen-lezen eigenschap wilt maken, maakt u een getter zonder overeenkomende setter. Wanneer u een alleen-schrijven eigenschap wilt maken, maakt u een setter zonder overeenkomende getter.
Parametersproperty:* — De id voor de eigenschap die set wijzigt; deze waarde moet gelijk zijn aan de waarde die wordt gebruikt in de overeenkomende opdracht get. | |
newValue:* — De nieuwe waarde die moet worden toegewezen. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt een lezen-schrijven eigenschap met de naam age gemaakt door een getter-setter te definiëren.
package { class User { private var userAge:Number; public function get age():Number { return userAge; } public function set age(x:Number):void { userAge = x; } } }
var myUser:User = new User(); myUser.age = 25; trace(myUser.age); // 25
Verwante API-elementen
static | trefwoorden voor kenmerken |
class someClassName{ static var varName; static const kName; static function methodName() { // your statements here } } |
Geeft op dat een variabele, constante of methode tot de klasse behoort en niet tot de instanties van de klasse.
Als u toegang wilt hebben tot een klasselid van het type static, gebruikt u de naam van de klasse in plaats van de naam van een instantie. De klasse Date heeft bijvoorbeeld een methode van het type static met de naam parse()
die alleen kan worden aangeroepen met de volgende syntaxis:
Date.parse()
De methode parse()
kan niet worden aangeroepen voor een instantie van de klasse Date. De volgende code genereert bijvoorbeeld een fout:
var myDate:Date = new Date(); myDate.parse("Jan 01 00:00:00 2006"); // error
U kunt static
alleen in klassedefinities gebruiken, niet in interfacedefinities.
Klasseleden van het type static worden niet overerfd. U kunt niet naar een klasselid van het type static verwijzen via de naam van een subklasse, zoals wel mogelijk is in Java of C++. U kunt echter naar een variabele of methode van het type static binnen een klasse of subklasse verwijzen zonder een kwalificatie te gebruiken. Zie het onderstaande voorbeeld.
U kunt de instructie super
of het trefwoord this
niet gebruiken in een methode van het type static.
varName:* — De naam van de variabele die u als type static wilt opgeven. | |
kName:* — De naam van de constante die u als type static wilt opgeven. | |
methodName:Function — De naam van de methode die u als type static wilt opgeven. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt getoond hoe u het gereserveerde woord static kunt gebruiken om een teller te maken die bijhoudt hoeveel instanties van de klasse zijn gemaakt. Aangezien de variabele numInstances van het type static is, wordt deze slechts eenmaal voor de gehele klasse gemaakt en niet voor elke afzonderlijke instantie. Maak een nieuw ActionScript-bestand met de naam Users.as en typ de volgende code:
class Users { private static var numInstances:Number = 0; function Users() { numInstances++; } static function get instances():Number { return numInstances; } }
trace(Users.instances); var user1:Users = new Users(); trace(Users.instances); var user2:Users = new Users(); trace(Users.instances);
class PowerUsers extends Users{ function PowerUsers() { instances++; // unqualified reference to static property Users.instances is legal } } trace(PowerUsers.instances); // error, cannot access static property using PowerUsers class
super | instructie |
super([arg1, ..., argN]) super.method([arg1, ..., argN]) |
Roept de versie van een methode of constructor in de superklasse of bovenliggende klasse aan. Wanneer de instructie super()
in de hoofdtekst van een klasseconstructor wordt gebruikt, wordt de superklasseversie van de constructor aangeroepen. De aanroep van de superklasseconstructor moet het juiste aantal argumenten bevatten. De superklasseconstructor wordt altijd aangeroepen, ongeacht of u deze wel of niet expliciet aanroept. Wanneer u deze niet expliciet aanroept, wordt automatisch een aanroep zonder argumenten voor de eerste instructie in de hoofdtekst van de subklasseconstructor ingevoegd. Wanneer u een constructorfunctie in een subklasse definieert en de superklasseconstructor een of meer argumenten gebruikt, moet u daarom de superklasseconstructor expliciet met het juiste aantal argumenten aanroepen. Anders wordt een fout gegenereerd. De aanroep van de superklasseconstructor hoeft echter niet de eerste instructie in de subklasseconstructor te zijn, zoals wel vereist was in ActionScript 2.0.
Bij gebruik in de hoofdtekst van een instantiemethode kan super
worden gebruikt met de puntoperator (.) om de superklasseversie van een methode aan te roepen en om optioneel argumenten (arg1 ... argN)
aan de superklassemethode door te geven. Dit is nuttig voor het maken van methoden van subklassen die niet alleen aanvullend gedrag aan methoden van superklassen toevoegen, maar ook de methoden van superklassen aanroepen om het oorspronkelijke gedrag uit te voeren.
U kunt de instructie super
niet in een methode van het type static gebruiken.
method:Function — De methode die in de superklasse moet worden aangeroepen. | |
argN:* — Optionele parameters die aan de superklasseversie van de methode worden doorgegeven of aan de constructorfunctie van de superklasse. |
Verwante API-elementen
switch | instructie |
switch (expression) { caseClause: [defaultClause:] } |
Hiermee wordt het beheer overgedragen naar één van verschillende instructies, afhankelijk van de waarde van een expressie. Alle switch
-instructies moeten een standaard-case bevatten die wordt uitgevoerd als geen van de case
-instructies overeenkomt met de expressie. Elke case
-instructie moet worden afgesloten met een break
-instructie, waarmee een fout wordt voorkomen die tot mislukking kan leiden. Wanneer een case mislukt, wordt de code in de volgende instructie case
uitgevoerd, hoewel die case mogelijk niet overeenkomt met de testexpressie.
expression:* — Willekeurige expressie. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt een instructie switch gedefinieerd waarbij de standaard-case wordt uitgevoerd:
var switchExpression:int = 3; switch (switchExpression) { case 0: trace(0); break; case 1: trace(1); break; case 2: trace(2); break; default: trace("Not 0, 1, or 2"); } // Not 0, 1, or 2
Verwante API-elementen
this | trefwoorden voor primaire expressies |
this |
Een verwijzing naar het object dat een methode bevat Wanneer een script wordt uitgevoerd, verwijst het gereserveerde woord this
naar het object dat het script bevat. In de hoofdtekst van een methode verwijst het gereserveerde woord this
naar de klasse-instantie die de aangeroepen methode bevat.
Voorbeeld
Hoe dit voorbeeld te gebruiken
Wanneer u een functie wilt aanroepen die in een dynamische klasse is gedefinieerd, moet u this gebruiken om de functie in het juiste bereik aan te roepen:
// incorrect version of Simple.as /* dynamic class Simple { function callfunc() { func(); } } */ // correct version of Simple.as dynamic class Simple { function callfunc() { this.func(); } }
var simpleObj:Simple = new Simple(); simpleObj.func = function() { trace("hello there"); } simpleObj.callfunc();
throw | instructie |
throw expression |
Genereert een fout die kan worden afgehandeld, of afgevangen, door een codeblok catch
. Als een uitzondering niet door een blok catch
wordt afgevangen, wordt de tekenreeksweergave van de gegenereerde waarde naar het deelvenster Uitvoer verzonden. Als een uitzondering niet door een blok catch
of finally
wordt afgevangen, wordt de tekenreeksweergave van de gegenereerde waarde naar het logbestand verzonden.
Doorgaans genereert u instanties van de klasse Error of subklassen ervan (zie de voorbeeldsectie).
Parametersexpression:* — Een ActionScript-expressie of -object. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In dit voorbeeld controleert een functie met de naam checkEmail() of de doorgegeven tekenreeks een juist ingedeeld e-mailadres is. Wanneer de tekenreeks het symbool @ niet bevat, genereert de functie een fout.
function checkEmail(email:String) { if (email.indexOf("@") == -1) { throw new Error("Invalid email address"); } } checkEmail("someuser_theirdomain.com");
try { checkEmail("Joe Smith"); } catch (e) { trace(e); } // Error: Invalid email address.
// Define Error subclass InvalidEmailError class InvalidEmailAddress extends Error { public function InvalidEmailAddress() { message = "Invalid email address."; } }
import InvalidEmailAddress; function checkEmail(email:String) { if (email.indexOf("@") == -1) { throw new InvalidEmailAddress(); } } try { checkEmail("Joe Smith"); } catch (e) { trace(e); } // Error: Invalid email address.
Verwante API-elementen
true | trefwoorden voor primaire expressies |
true |
Booleaanse waarde die true vertegenwoordigt. Een Booleaanse waarde is true
of false
; het tegengestelde van true
is false
. Wanneer true
via automatische gegevenstypering in een getal wordt omgezet, wordt de waarde 1; wanneer true
in een tekenreeks wordt omgezet, is het resultaat "true"
.
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld ziet u hoe true in een if-instructie wordt gebruikt:
var shouldExecute:Boolean; // ... // code that sets shouldExecute to either true or false goes here // shouldExecute is set to true for this example: shouldExecute = true; if (shouldExecute == true) { trace("your statements here"); } // true is also implied, so the if statement could also be written: // if (shouldExecute) { // trace("your statements here"); // }
var myNum:Number; myNum = 1 + true; trace(myNum); // 2
Verwante API-elementen
try..catch..finally | instructie |
try { // try block } finally { // finally block } try { // try block } catch(error[:ErrorType1]) { // catch block } [catch(error[:ErrorTypeN]) { // catch block }] [finally { // finally block }] |
Omsluit een codeblok waarin een fout kan optreden en reageert vervolgens op de fout. Uitzonderingsafhandeling, die wordt geïmplementeerd via de instructies try..catch..finally
, vormt het primaire mechanisme voor afhandeling van fouten bij uitvoering in ActionScript 3.0. Wanneer bij uitvoering een fout optreedt, genereert Flash Player een uitzondering. Dit betekent dat Flash Player de normale uitvoering onderbreekt en een speciaal object van het type Error
maakt. Flash Player geeft, of passeert , het foutobject door aan het eerste beschikbare blok catch
. Wanneer geen blokken catch
beschikbaar zijn, wordt de uitzondering beschouwd als een niet-afgevangen uitzondering. Bij niet-afgevangen uitzonderingen wordt het script beëindigd.
U kunt de instructie throw
gebruiken om expliciet uitzonderingen in de code te genereren. U kunt elke gewenste waarde genereren, maar u kunt het beste een object genereren, aangezien dit flexibiliteit biedt en goed aansluit bij het gedrag van Flash Player.
Wanneer u een uitzondering wilt afvangen, ongeacht of deze door Flash Player of door uw eigen code is gegenereerd, plaatst u de code die de uitzondering kan genereren in een blok try
. Als code in het blok try
een uitzondering genereert, wordt eerst het blok catch
uitgevoerd (indien aanwezig) en vervolgens het blok finally
(indien aanwezig). Het blok finally
wordt altijd uitgevoerd, ongeacht of een uitzondering is gegenereerd. Als de code in het blok try
geen uitzondering genereert (met andere woorden: als het blok try
op normale wijze wordt voltooid), wordt de code in het blok catch
genegeerd, maar wordt de code in het blok finally
nog wel uitgevoerd. Het blok finally
wordt ook uitgevoerd als het blok try
wordt afgesloten met een return
-instructie.
Een blok try
moet worden gevolgd door een blok catch
en/of een blok finally
. Eén try
-blok kan meerdere catch
-blokken bevatten, maar slechts één finally
-blok. U kunt blokken try
tot een willekeurig niveau nesten.
De parameter error
die in een catch
-handler wordt opgegeven, moet een eenvoudige id zijn, zoals e
of theException
of x
. De parameter kan ook worden opgegeven. Als getypeerde parameters in meerdere catch
-blokken worden gebruikt, kunt u meerdere typen foutobjecten afvangen die vanuit één try
-blok zijn gegenereerd.
Wanneer de gegenereerde uitzondering een object is, komt het type overeen als het gegenereerde object een subklasse van het opgegeven type is. Wanneer een fout van een specifiek type wordt gegenereerd, wordt het blok catch
uitgevoerd dat de bijbehorende fout afhandelt. Als een uitzondering wordt gegenereerd die niet van het opgegeven type is, wordt het blok catch
niet uitgevoerd en springt de interpreter automatisch van het blok try
naar een catch
-handler die wel overeenkomt met het type.
Als een fout in een functie wordt gegenereerd en de functie geen catch
-handler bevat, sluit Flash Player die functie, en eventuele aanroepende functies, af totdat een blok catch
wordt gevonden. Tijdens dit proces worden handlers finally
op alle niveaus aangeroepen.
error:* — De expressie die met een instructie throw wordt gegenereerd. Dit is doorgaans een instantie van de klasse Error of een van de subklassen ervan. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld ziet u een instructie try..catch. De code in het blok try blok bevat een ongeldige bewerking. Een sprite kan zichzelf niet als onderliggend element toevoegen. Dit leidt ertoe dat Flash Player een uitzondering genereert en een object van het type ArgumentError doorgeeft aan het overeenkomende blok catch.
import flash.display.Sprite; var spr:Sprite = new Sprite(); try { spr.addChild(spr); } catch (e:ArgumentError) { trace (e); // ArgumentError: Error #2024: An object may not be added as a child of itself. }
class RecordSetException extends Error { public function RecordSetException () { message = "Record set exception occurred."; } } class MalformedRecord extends Error { public function MalformedRecord { message = "Malformed record exception occurred."; } }
class RecordSet { public function sortRows() { var returnVal:Number = randomNum(); if (returnVal == 1) { throw new RecordSetException(); } else if (returnVal == 2) { throw new MalformedRecord(); } } public function randomNum():Number { return Math.round(Math.random() * 10) % 3; } }
import RecordSet; var myRecordSet:RecordSet = new RecordSet(); try { myRecordSet.sortRows(); trace("everything is fine"); } catch (e:RecordSetException) { trace(e.toString()); } catch (e:MalformedRecord) { trace(e.toString()); }
Verwante API-elementen
use namespace | compileraanwijzingen |
use namespace ns1[, ns2, ...nsN] |
Hiermee wordt de opgegeven naamruimten toegevoegd aan de reeks open naamruimten. De opgegeven naamruimten worden uit de set open naamruimten verwijderd wanneer het huidige codeblok wordt afgesloten. De aanwijzing use namespace
kan zich op het hoogste niveau van een programma, pakketdefinitie of klassedefinitie bevinden.
nsN:Namespace — Een of meer naamruimten die aan de set open naamruimten moeten worden toegevoegd. |
Verwante API-elementen
var | trefwoorden voor definities |
var variableName [= value1][...,variableNameN[=valueN]] |
Geeft een variabele op. Wanneer u variabelen binnen een functie declareert, zijn het lokale variabelen. Deze worden voor de functie gedefinieerd en verlopen aan het einde van de functieaanroep.
U kunt een variabele die binnen het bereik van een ander object is geplaatst, niet als een lokale variabele declareren.
my_array.length = 25; // ok var my_array.length = 25; // syntax error
U kunt een gegevenstype aan een variabele toewijzen door een dubbele punt toe te voegen, gevolgd door het gegevenstype.
U kunt meerdere variabelen in een enkele instructie declareren door de declaraties met komma's te scheiden (hoewel deze notatie de code minder duidelijk kan maken).
var first:String = "Bart", middle:String = "J.", last:String = "Bartleby";Parameters
variableName:* — Een id. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In de volgende ActionScript-code wordt een nieuwe array met productnamen gemaakt. Array.push voegt een element aan het einde van de array toe.
var product_array:Array = new Array("Studio", "Dreamweaver", "Flash", "ColdFusion", "Contribute", "Breeze"); product_array.push("Flex"); trace(product_array); // Studio,Dreamweaver,Flash,ColdFusion,Contribute,Breeze,Flex
Verwante API-elementen
while | instructie |
while (condition) { // statement(s) } |
Evalueert een voorwaarde. Wanneer deze de waarde true
oplevert, worden een of meer instructies uitgevoerd voordat de voorwaarde opnieuw wordt geëvalueerd. Nadat de voorwaarde false
heeft opgeleverd, worden de instructies overgeslagen en wordt de lus beëindigd.
De instructie while
voert de volgende reeks stappen uit. Elke keer dat de stappen 1 tot en met 4 worden doorlopen wordt een herhaling van de lus genoemd. De voorwaarde wordt getest aan het begin van elke herhaling, zoals in de volgende stappen wordt getoond:
- De expressie
condition
wordt geëvalueerd. - Als
condition
de waardetrue
oplevert of een waarde die in de Booleaanse waardetrue
wordt omgezet (bijvoorbeeld een getal dat niet gelijk is aan nul), gaat u naar stap 3. Als dit niet het geval is, wordt de instructiewhile
voltooid en wordt de volgende instructie na de luswhile
uitgevoerd. - Voer het blok met instructies (
statement(s)
) uit. Als eencontinue
-instructie wordt aangetroffen, slaat u de resterende instructies over en gaat u naar stap 1. Als eenbreak
-instructie wordt aangetroffen, wordt de instructiewhile
voltooid en wordt de volgende instructie na de luswhile
uitgevoerd. - Ga naar stap 1.
Een lusbewerking wordt doorgaans gebruikt om een handeling uit te voeren wanneer een tellervariabele lager is dan een opgegeven waarde. Aan het einde van elke lus wordt de teller verhoogd totdat de opgegeven waarde is bereikt. Op dat punt is de waarde van condition
niet langer true
en eindigt de lus.
De accolades ({}
) rondom de instructies die moeten worden uitgevoerd door de instructie while
zijn niet nodig als slechts één instructie wordt uitgevoerd.
condition:Boolean — Een expressie die true of false oplevert. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld wordt de instructie while gebruikt om een expressie te testen. Als de waarde van i lager is dan 20, wordt de waarde van i gevolgd. Wanneer de voorwaarde niet meer true is, eindigt de lus.
var i:Number = 0; while (i < 20) { trace(i); i += 3; } /* 0 3 6 9 12 15 18 */
Verwante API-elementen
with | instructie |
with (object:Object) { // statement(s) } |
Stelt een standaardobject in dat wordt gebruikt voor uitvoering van een instructie of instructies, waardoor de hoeveelheid te schrijven code mogelijk wordt verminderd.
De parameter object
wordt de context waarin de eigenschappen, variabelen en functies in de parameter statement(s)
worden gelezen. Als object
bijvoorbeeld my_array
is en twee van de opgegeven eigenschappen length
en concat
zijn, worden die eigenschappen automatisch gelezen als my_array.length
en my_array.concat
. Of, als object
bijvoorbeeld state.california
is, worden handelingen of instructies binnen de instructie with
aangeroepen vanuit de instantie california
.
Om de waarde te vinden van een id in de parameter statement(s)
, start ActionScript aan het begin van de bereikketen die is opgegeven door object
. Vervolgens wordt op elk niveau van de bereikketen in een bepaalde volgorde naar de id gezocht.
De bereikketen die door de instructie with
wordt gebruikt om id's om te zetten, begint met het eerste item in de volgende lijst en gaat door tot het laatste item:
- Het object dat in de parameter
object
in de binnenste instructiewith
is opgegeven. - Het object dat in de parameter
object
in de buitenste instructiewith
is opgegeven. - Het object Activation (een tijdelijk object dat automatisch wordt gemaakt wanneer het script een functie aanroept die de lokale variabelen bevat die in de functie worden aangeroepen).
- Het object dat het script bevat dat momenteel wordt uitgevoerd.
- Het object Global (ingebouwde objecten zoals Math en String).
Wanneer u een variabele binnen een instructie with
wilt instellen, moet u de variabele buiten de instructie with
hebben gedeclareerd of moet u het volledige pad invoeren naar de tijdlijn waarin u de variabele wilt gebruiken. Wanneer u een variabele in een instructie with
instelt zonder deze te declareren, zoekt de instructie with
naar de waarde volgens de bereikketen. Wanneer de variabele nog niet bestaat, wordt de nieuwe waarde ingesteld in de tijdlijn van waaruit de instructie with
is aangeroepen.
object:Object — Een instantie van een ActionScript-object of -filmclip. |
Voorbeeld
Hoe dit voorbeeld te gebruiken
In het volgende voorbeeld worden de eigenschappen _x en _y van de instantie someOther_mc ingesteld en wordt someOther_mc geïnstrueerd naar frame 3 te gaan en te stoppen. with (someOther_mc) { _x = 50; _y = 100; gotoAndStop(3); } In het volgende codefragment wordt getoond hoe u het vorige codefragment schrijft zonder een instructie with te gebruiken. someOther_mc._x = 50; someOther_mc._y = 100; someOther_mc.gotoAndStop(3); De instructie with is nuttig om tegelijkertijd toegang te krijgen tot meerdere items in een bereikketenlijst. In het volgende voorbeeld wordt het ingebouwde object Math vooraan in de bereikketen geplaatst. Als u Math als standaardobject instelt, worden de id's cos, sin en PI respectievelijk omgezet in Math.cos, Math.sin en Math.PI. De id's a, x, y en r zijn geen methoden of eigenschappen van het object Math, maar aangezien deze in het objectactiveringsbereik van de functie polar() aanwezig zijn, worden ze in de overeenkomende lokale variabelen omgezet.
function polar(r:Number):void { var a:Number, x:Number, y:Number; with (Math) { a = PI * pow(r, 2); x = r * cos(PI); y = r * sin(PI / 2); } trace("area = " + a); trace("x = " + x); trace("y = " + y); } polar(3); /* area = 28.2743338823081 x = -3 y = 3 */
Wed Jun 13 2018, 12:00 PM Z