Flash Player of AIR verzendt gebeurtenisobjecten telkens wanneer een gebeurtenis plaatsvindt. Als het gebeurtenisdoel zich niet in het weergaveoverzicht bevindt, wordt het gebeurtenisobject direct door Flash Player of AIR naar het gebeurtenisdoel verzonden. Flash Player verzendt het gebeurtenisobject progress bijvoorbeeld direct naar een URLStream-object. Als het gebeurtenisdoel zich echter wel in het weergaveoverzicht bevindt, wordt het gebeurtenisobject door Flash Player naar het weergaveoverzicht verzonden en doorloopt het gebeurtenisobject het weergaveoverzicht tot aan het gebeurtenisdoel.
De
gebeurtenisstroom
beschrijft hoe een gebeurtenisobject het weergaveoverzicht doorloopt. Het weergaveoverzicht is geordend in een hiërarchie die als een boom kan worden beschreven. Aan de bovenkant in de hiërarchie bevindt zich het werkgebied, wat een speciale weergaveobjectcontainer is die als basis van het weergaveoverzicht fungeert. Het werkgebied wordt vertegenwoordigd door de klasse flash.display.Stage en kan alleen via een weergaveobject worden benaderd. Elk weergaveobject heeft een eigenschap met de naam
stage
die naar het werkgebied voor die toepassing verwijst.
Wanneer Flash Player of AIR een gebeurtenisobject verstuurd voor een lijstgerelateerde weergavegebeurtenis, dan wordt dit gebeurtenisobject teruggestuurd vanaf de Stage naar het
doelknooppunt
. In de DOM Events Specification wordt de doelnodegedefinieerd als de node die het gebeurtenisdoel vertegenwoordigt. Met andere woorden, de doelnode is het weergaveoverzichtobject waar de gebeurtenis heeft plaatsgevonden. Als een gebruiker bijvoorbeeld op een weergaveoverzichtobject met de naam
child1
klikt, verzendt Flash Player of AIR een gebeurtenisobject waarbij
child1
de doelnode is.
De gebeurtenisstroom kan in drie fasen worden onderverdeeld. De eerste fase wordt de vastlegfase genoemd. Deze fase omvat alle nodes van het werkgebied tot aan de bovenliggende node van de doelnode. De tweede fase wordt de doelfase genoemd en bestaat uitsluitend uit de doelnode. De derde fase wordt de terugkoppelfase genoemd. Deze fase bestaat uit de nodes die worden aangetroffen op de terugtocht van de bovenliggende node van de doelnode naar het werkgebied.
De namen van de fasen zijn gemakkelijker te onthouden als u zich het weergaveoverzicht voorstelt als een verticale hiërarchie met aan de bovenkant het werkgebied, zoals in het volgende voorbeeld wordt getoond:
Als een gebruiker op
Child1
klikt, verzendt Flash Player of AIR een gebeurtenisobject naar de gebeurtenisstroom. Als de volgende afbeelding wordt weergegeven, begint de tocht van het object bij
Stage
en gaat deze vervolgens via
Parent Node
naar
Child1 Node
, om daarna weer terug te keren naar
Stage
. De terugtocht gaat via
Parent Node
naar
Stage
.
In dit voorbeeld bestaat de vastlegfase uit
Stage
en
Parent Node tijdens
de tocht omlaag. De doelfase bestaat uit
Child1 Node
. De terugkoppelfase bestaat uit
Parent Node
en
Stage
die tijdens de terugtocht weer voorbij komen.
De gebeurtenisstroom draagt bij aan een krachtiger systeem voor gebeurtenisafhandeling dan eerder beschikbaar was voor ActionScript-programmeurs. In eerdere versies van ActionScript bestaat de gebeurtenisstroom niet. Dit betekent dat gebeurtenislisteners alleen kunnen worden toegevoegd aan het object waardoor de gebeurtenis wordt gegenereerd. In ActionScript 3.0 kunt u gebeurtenislistener niet alleen aan een doelnode toevoegen, maar aan elke willekeurige node in de gebeurtenisstroom.
De mogelijkheid om gebeurtenislisteners in de gebeurtenisstroom toe te voegen is handig wanneer een gebruikersinterfacecomponent uit meerdere objecten bestaat. Een knopobject bevat bijvoorbeeld vaak een tekstobject dat als label voor de knop fungeert. Zonder de mogelijkheid om een listener aan de gebeurtenisstroom toe te voegen, moet u een listener aan zowel het knopobject als het tekstobject toevoegen, om er zeker van te zijn dat u een melding ontvangt wanneer er klikgebeurtenissen op een willekeurige locatie op de knop plaatsvinden. Dankzij de gebeurtenisstroom kunt u echter één gebeurtenislistener op het knopobject plaatsen, die zowel klikgebeurtenissen afhandelt die op het tekstobject plaatsvinden, als klikgebeurtenissen die plaatsvinden op plaatsen van de knop die niet achter het tekstobject zijn verborgen.
Niet elk gebeurtenisobject neemt echter deel aan alle drie fasen van de gebeurtenisstroom. Sommige gebeurtenistypen, zoals
enterFrame
en
init
, worden direct naar de doelnode verzonden en nemen noch aan de vastlegfase noch aan de terugkoppelfase deel. Andere gebeurtenissen kunnen als doel een object hebben dat zich niet in het weergaveoverzicht bevindt, zoals gebeurtenissen die naar een instantie van de klasse Socket worden verzonden. Deze gebeurtenisobjecten gaan ook direct naar het doelobject, zonder aan de vastleg- en terugkoppelfase deel te nemen.
Als u wilt weten hoe een bepaald gebeurtenistype zich gedraagt, raadpleegt u de API-documentatie of vraagt u de waarde op van de eigenschappen van het gebeurtenisobject. In de volgende sectie wordt beschreven hoe u de waarden van de eigenschappen van het gebeurtenisobject kunt opvragen.