De gebeurtenisstroom

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

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.