Gebeurtenissen afhandelen

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"); 
}