Elke component zendt gebeurtenissen uit wanneer de gebruiker ermee werkt. Wanneer de gebruiker op een knop klikt, verzendt deze de gebeurtenis
MouseEvent.CLICK
en wanneer de gebruiker een item in een lijst selecteert, verzendt deze de gebeurtenis Event.
CHANGE
. Er kan ook een gebeurtenis plaatsvinden wanneer er iets belangrijks gebeurt met een component, bijvoorbeeld wanneer inhoud is geladen voor een UILoader-instantie. In dat geval wordt de gebeurtenis
Event.COMPLETE
gegenereerd. U handelt een gebeurtenis af door ActionScript-code te schrijven die wordt uitgevoerd wanneer de gebeurtenis plaatsvindt.
Tot de gebeurtenissen van een component behoren de gebeurtenissen van een klasse waarvan de component gebeurtenissen overerft. Dit betekent dat alle ActionScript 3.0-gebruikersinterfacecomponenten gebeurtenissen van de klasse UIComponent overerven omdat dit de basisklasse is voor de ActionScript 3.0-gebruikersinterfacecomponenten. Als u de lijst met gebeurtenissen wilt bekijken die door een component worden gebroadcast, gaat u naar de sectie met gebeurtenissen voor de klasse die bij de component hoort in de
Naslaggids voor ActionScript 3.0
voor Adobe Flash Professional CS5
.
Zie
ActionScript 3.0 programmeren
voor een volledige uitleg over het afhandelen van gebeurtenissen in ActionScript 3.0.
Gebeurtenislisteners
Bij het afhandelen van gebeurtenissen voor ActionScript 3.0-componenten moet u rekening houden met de volgende belangrijke punten:
-
Alle gebeurtenissen worden uitgezonden door een instantie van een componentklasse. De componentinstantie is de
broadcaster
.
-
U registreert een gebeurtenis
listener
door de methode
addEventListener()
voor de componentinstantie aan te roepen. Met de volgende coderegel wordt bijvoorbeeld een listener voor de gebeurtenis
MouseEvent.CLICK
toegevoegd aan de Button-instantie
aButton
:
aButton.addEventListener(MouseEvent.CLICK, clickHandler);
Met de tweede parameter van de methode
addEventListener()
wordt de naam van de functie,
clickHandler
, geregistreerd om te worden aangeroepen wanneer de gebeurtenis plaatsvindt. Deze functie wordt ook wel een
callback
-functie
genoemd.
-
U kunt meerdere listeners registreren voor één componentinstantie.
aButton.addEventListener(MouseEvent.CLICK, clickHandler1);
aButton.addEventListener(MouseEvent.CLICK, clickHandler2);
-
U kunt één listener registreren voor meerdere componentinstanties.
aButton.addEventListener(MouseEvent.CLICK, clickHandler1);
bButton.addEventListener(MouseEvent.CLICK, clickHandler1);
-
Aan de gebeurtenishandlerfunctie wordt een gebeurtenisobject doorgegeven dat informatie bevat over het gebeurtenistype en de instantie die de gebeurtenis uitzendt. Zie
Informatie over het gebeurtenisobject
voor meer informatie.
-
De listener blijft actief tot de toepassing wordt beëindigd of u de listener expliciet verwijdert met de methode
removeEventListener()
. Met de volgende coderegel wordt bijvoorbeeld de listener voor de gebeurtenis
MouseEvent.CLICK
op
aButton
verwijderd:
aButton.removeEventListener(MouseEvent.CLICK, clickHandler);
Informatie over het gebeurtenisobject
Het gebeurtenisobject overerft van de Event-objectklasse en heeft eigenschappen met informatie over de gebeurtenis die heeft plaatsgevonden, inclusief de eigenschappen
target
en
type
, die essentiële informatie over de gebeurtenis bevatten:
Eigenschap
|
Beschrijving
|
type
|
Een tekenreeks waarmee het type gebeurtenis wordt aangegeven.
|
target
|
Een verwijzing naar de componentinstantie die de gebeurtenis uitzendt.
|
Als een gebeurtenis extra eigenschappen heeft, worden deze opgenomen in de beschrijving van de klasse die bij de gebeurtenis hoort. Deze beschrijving vindt u in de
Naslaggids voor ActionScript 3.0
voor Adobe Flash Professional CS5
.
Wanneer er een gebeurtenis plaatsvindt, wordt het gebeurtenisobject automatisch gegenereerd en doorgegeven aan de gebeurtenishandlerfunctie.
U kunt het gebeurtenisobject in de functie gebruiken om de naam weer te geven van de gebeurtenis die is uitgezonden of de instantienaam weer te geven van de component die de gebeurtenis heeft uitgezonden. Via de instantienaam hebt u weer toegang tot andere componenteigenschappen. In de volgende code wordt bijvoorbeeld de eigenschap
target
van het gebeurtenisobject
evtObj
gebruikt om toegang te krijgen tot de eigenschap
label
van
aButton
en deze weer te geven in het deelvenster Uitvoer:
import fl.controls.Button;
import flash.events.MouseEvent;
var aButton:Button = new Button();
aButton.label = "Submit";
addChild(aButton);
aButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(evtObj:MouseEvent){
trace("The " + evtObj.target.label + " button was clicked");
}
|
|
|