Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Miejsca docelowe zdarzeń są ważnym składnikiem modelu zdarzeń w programie Flash® Player i środowisku wykonawczym Adobe® AIR®. Miejsce docelowe zdarzeń jest punktem skupienia przepływu zdarzeń przez hierarchię listy wyświetlania. Gdy wystąpi zdarzenie, takie jak kliknięcie myszą lub naciśnięcie klawisza, program Flash Player lub aplikacja środowiska AIR wywołuje zdarzenie, tj. kieruje obiekt zdarzenia do przepływu zdarzeń od początku listy wyświetlania. Obiekt zdarzenia przechodzi przez listę wyświetlania, aż do miejsca docelowego, a następnie wraca przez listę wyświetlania do początku hierarchii. Droga zdarzenia jest logicznie podzielona na trzy fazy: fazę przechwytywania, czyli drogę od początku hierarchii do ostatniego węzła przed miejscem docelowym zdarzenia; fazę miejsca docelowego, która obejmuje tylko węzeł będący miejscem docelowym; oraz fazę propagacji, która obejmuje wszystkie kolejne węzły napotkane w drodze powrotnej do początku listy wyświetlania.
Zasadniczo najprostszym sposobem wyposażenia własnej klasy w funkcjonalność pozwalającą na wywoływanie zdarzeń jest rozszerzenie klasy EventDispatcher. Jeśli jest to niemożliwe (tj. jeśli nasza klasa jest już rozszerzeniem innej klasy), można zamiast tego zaimplementować interfejs IEventDispatcher, utworzyć element EventDispatcher i napisać proste miejsca na wywołania kierujące do zagregowanej klasy EventDispatcher.
Metoda | Zdefiniowane przez | ||
---|---|---|---|
EventDispatcher(target:IEventDispatcher = null)
Agreguje wystąpienie klasy EventDispatcher. | EventDispatcher | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Rejestruje obiekt detektora zdarzeń w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. | EventDispatcher | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. | EventDispatcher | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Usuwa detektor z obiektu EventDispatcher. | EventDispatcher | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object | ||
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego elementach macierzystych. | EventDispatcher |
Zdarzenie | Podsumowanie | Zdefiniowane przez | ||
---|---|---|---|---|
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja środowiska wykonawczego AIR uzyskuje fokus w systemie operacyjnym i przechodzi w stan aktywny. | EventDispatcher | |||
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. | EventDispatcher |
EventDispatcher | () | Konstruktor |
public function EventDispatcher(target:IEventDispatcher = null)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Agreguje instancję klasy EventDispatcher.
Klasa EventDispatcher jest z reguły używana jako klasa podstawowa, co oznacza, że większość programistów nie musi używać tej funkcji konstruktora. Z konstruktora muszą jednak korzystać zaawansowani programiści, którzy implementują interfejs IEventDispatcher. Jeśli rozszerzenie klasy EventDispatcher nie jest możliwe i zachodzi konieczność zaimplementowania interfejsu IEventDispatcher, należy użyć tego konstruktora w celu zagregowania instancji klasy EventDispatcher.
Parametrytarget:IEventDispatcher (default = null ) — Obiekt docelowy dla wywołanych zdarzeń kierowanych do obiektu EventDispatcher. Ten parametr jest używany, gdy instancja klasy EventDispatcher jest agregowana przez klasę, która implementuje interfejs IEventDispatcher; jest to konieczne, aby obiekt zawierający mógł być miejscem docelowym zdarzeń. Nie należy używać tego parametru w prostych przypadkach, w których klasa jest rozszerzeniem klasy podstawowej EventDispatcher.
|
addEventListener | () | metoda |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Rejestruje obiekt detektora zdarzenia w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. We wszystkich węzłach listy wyświetlania można rejestrować detektory zdarzeń reagujące na zdarzenia konkretnego typu, znajdujące się w określonej fazie i mające określony priorytet.
Po pomyślnym zarejestrowaniu detektora zdarzeń nie można zmienić jego priorytetu poprzez dodatkowe wywołania metody addEventListener()
. Aby zmienić priorytet detektora, należy najpierw wywołać metodę removeListener()
. Następnie można ponownie zarejestrować detektor z nowym poziomem priorytetu.
Należy pamiętać, że po zarejestrowaniu detektora późniejsze wywołania metody addEventListener()
z różnymi wartościami type
albo useCapture
powodują rejestrowanie odrębnych detektorów. Na przykład detektor zarejestrowany z parametrem useCapture
ustawionym na true
wykrywa tylko zdarzenia w fazie przechwytywania. Po ponownym wywołaniu metody addEventListener()
z tym samym obiektem detektora, ale z parametrem useCapture
ustawionym na false
będą istniały dwa odrębne detektory: jeden wykrywający zdarzenia w fazie przechwytywania, a drugi wykrywający zdarzenia w fazach miejsca docelowego i propagacji.
Nie można zarejestrować detektora zdarzeń, który wykrywałby tylko zdarzenia w fazie miejsca docelowego lub tylko zdarzenia w fazie propagacji. Te fazy są sprzężone podczas rejestracji, ponieważ propagacja zachodzi tylko w przodkach węzła miejsca docelowego.
Gdy detektor zdarzeń przestanie być potrzebny, należy go usunąć, wywołując metodę removeEventListener()
; w przeciwnym razie mogą wystąpić problemy w zarządzaniu pamięcią. Detektory zdarzeń nie są automatycznie usuwane z pamięci, ponieważ proces czyszczenia pamięci nie usuwa detektora, pod warunkiem że istnieje obiekt wywołujący (o ile dla parametru useWeakReference
ustawiona jest wartość true
).
Skopiowanie instancji klasy EventDispatcher nie powoduje skopiowania detektorów zdarzeń dołączonych do tej instancji. (Jeśli utworzono nowy węzeł, dla którego potrzebny jest detektor zdarzeń, należy dołączyć detektor po utworzeniu węzła). Jednak przeniesienie instancji klasy EventDispatcher powoduje również przeniesienia dołączonych do niej detektorów zdarzeń
Jeśli detektor zdarzeń jest rejestrowany w węźle w momencie, gdy ten węzeł przetwarza zdarzenie, detektor nie zostanie wywołany w bieżącej fazie, ale może być wywołany w późniejszej fazie przepływu zdarzeń, np. w fazie propagacji.
Jeśli detektor zdarzeń zostanie usunięty z węzła w momencie, gdy ten węzeł przetwarza zdarzenie, zostanie wywołany przez bieżące operacje. Raz usunięty detektor zdarzeń nie jest nigdy ponownie wywoływany (chyba że zostanie ponownie zarejestrowany na potrzeby dalszego etapu wykonania programu).
Parametry
type:String — Typ zdarzenia.
| |
listener:Function — Funkcja detektora, który przetwarza zdarzenie. Ta funkcja musi przyjmować obiekt Event jako swój jedyny parametr i nie może zwracać żadnych wyników, tak jak ilustruje to poniższy przykład:
function(evt:Event):void Funkcja może mieć dowolną nazwę. | |
useCapture:Boolean (default = false ) —
Określa, czy detektor działa w fazie przechwytywania, czy w fazach miejsca docelowego i propagacji. Jeżeli parametr useCapture jest ustawiony na true , wówczas detektor przetwarza zdarzenie tylko w trakcie fazy przechwytywania, a nie w trakcie fazy miejsca docelowego i propagacji. Jeżeli parametr useCapture ma wartość false , wówczas detektor przetwarza zdarzenie tylko w trakcie fazy miejsca docelowego i propagacji. W celu wykrywania zdarzenia we wszystkich trzech fazach należy wywołać metodę addEventListener dwa razy — raz z parametrem useCapture ustawionym na true , a następnie ponownie, z parametrem useCapture ustawionym na false .
| |
priority:int (default = 0 ) — Poziom priorytetu detektora zdarzeń. Priorytet ma postać 32-bitowej liczby całkowitej ze znakiem. Im wyższa jest liczba, tym wyższy priorytet. Wszystkie detektory z priorytetem n są przetwarzane przed detektorami z priorytetem n-1. Jeżeli dwa lub większa liczba detektorów ma ten sam priorytet, będą one przetwarzane w kolejności, w jakiej zostały dodane. Priorytet domyślny to 0.
| |
useWeakReference:Boolean (default = false ) — Określa, czy odwołanie do detektora jest mocne, czy słabe. Odwołanie mocne (domyślnie) zapobiega usunięciu detektora przy okazji porządkowania pamięci. Odwołanie słabe temu nie zapobiega. Funkcje składowe na poziomie klasy nie podlegają porządkowaniu pamięci, zatem można ustawić właściwość |
Zgłasza
ArgumentError — Określony detektor zdarzeń (listener ) nie jest funkcją.
|
dispatchEvent | () | metoda |
public function dispatchEvent(event:Event):Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. Miejscem docelowym zdarzenia jest obiekt EventDispatcher, względem którego wywołano metodę dispatchEvent()
.
Parametry
event:Event — Obiekt Event, który jest wywoływany, tj. kierowany do przepływu zdarzeń. Jeśli zdarzenie jest wywoływane ponownie, automatycznie tworzony jest klon zdarzenia. Po wywołaniu zdarzenia nie można zmienić jego właściwości target , zatem należy utworzyć nową kopię zdarzenia w celu ponownego wywołania.
|
Boolean — Wartość true , jeśli zdarzenie zostało pomyślnie wywołane. Wartość false oznacza niepowodzenie lub wywołanie metody preventDefault() w zdarzeniu.
|
Zgłasza
Error — Osiągnięto limit rekurencji wywoływania zdarzeń.
|
hasEventListener | () | metoda |
public function hasEventListener(type:String):Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. Umożliwia to określenie, w którym miejscu hierarchii przepływu zdarzeń w obiekcie EventDispatcher zmodyfikowana jest obsługa zdarzeń danego typu. Aby sprawdzić, czy zdarzenie określonego typu faktycznie wywoła detektor zdarzeń, należy użyć metody willTrigger()
.
Różnica między metodą hasEventListener()
a metodą willTrigger()
polega na tym, że metoda hasEventListener()
sprawdza tylko obiekt, do którego należy, natomiast metoda willTrigger()
sprawdza cały przepływ zdarzenia określonego parametrem type
.
Gdy metoda hasEventListener()
jest wywoływana z obiektu LoaderInfo, pod uwagę brane są tylko detektory, do których obiekt wywołujący może uzyskać dostęp.
Parametry
type:String — Typ zdarzenia.
|
Boolean — Wartość true , jeśli detektor określonego typu jest zarejestrowany, wartość false w przeciwnym wypadku.
|
Powiązane elementy interfejsu API
removeEventListener | () | metoda |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Usuwa detektor z obiektu EventDispatcher. Jeśli w obiekcie EventDispatcher nie ma zarejestrowanego zgodnego detektora zdarzeń, wywołanie tej metody nie odnosi żadnego skutku.
Parametry
type:String — Typ zdarzenia.
| |
listener:Function — Obiekt detektora przeznaczony do usunięcia.
| |
useCapture:Boolean (default = false ) —
Określa, czy detektor był zarejestrowany dla fazy przechwytywania, czy dla faz miejsca docelowego i propagacji. Jeżeli detektor był zarejestrowany zarówno dla fazy przechwytywania, jak i dla fazy miejsca docelowego i propagacji, konieczne są dwa wywołania metody removeEventListener() : jedno wywołanie z parametrem useCapture ustawionym na true , a następne wywołanie z parametrem useCapture ustawionym na false .
|
willTrigger | () | metoda |
public function willTrigger(type:String):Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego przodkach. Ta metoda zwraca wartość true
, jeśli detektor zdarzeń będzie wywoływany w dowolnej fazie przepływu zdarzeń, gdy zdarzenie określonego typu zostanie wywołane w obiekcie EventDispatcher lub dowolnym z jego przodków.
Różnica między metodą hasEventListener()
a metodą willTrigger()
polega na tym, że metoda hasEventListener()
sprawdza tylko obiekt, do którego należy, natomiast metoda willTrigger()
sprawdza cały przepływ zdarzenia określonego parametrem type
.
Gdy metoda willTrigger()
jest wywoływana z obiektu LoaderInfo, pod uwagę brane są tylko detektory, do których obiekt wywołujący może uzyskać dostęp.
Parametry
type:String — Typ zdarzenia.
|
Boolean — Wartość true , jeśli detektor określonego typu będzie wywoływany, wartość false w przeciwnym wypadku.
|
activate | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.ACTIVATE
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja środowiska wykonawczego AIR uzyskuje fokus w systemie operacyjnym i przechodzi w stan aktywny. Jest to zdarzenie broadcast, co oznacza, że zostanie ono wywołane przez wszystkie obiekty EventDispatcher, których detektor jest zarejestrowany dla tego zdarzenia. Więcej informacji o zdarzeniach broadcast zawiera opis klasy DisplayObject.
StałaACTIVATE
definiuje wartość właściwości type
obiektu zdarzenia activate
.
Uwaga: to zdarzenie nie zawiera fazy „przechwytywania” ani „propagacji”, co oznacza, że detektory zdarzeń muszą być dodawane bezpośrednio do każdego potencjalnego obiektu docelowego — niezależnie od tego, czy obiekt znajduje się na liście wyświetlania.
To zdarzenie nie jest nigdy automatycznie wywoływane na urządzeniach telewizyjnych ze środowiskiem AIR. Można wywołać je ręcznie.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Dowolna instancja klasy DisplayObject z detektorem zarejestrowanym dla zdarzenia activate . |
Powiązane elementy interfejsu API
deactivate | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.DEACTIVATE
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. Jest to zdarzenie broadcast, co oznacza, że zostanie ono wywołane przez wszystkie obiekty EventDispatcher, których detektor jest zarejestrowany dla tego zdarzenia. Więcej informacji o zdarzeniach broadcast zawiera opis klasy DisplayObject.
StałaEvent.DEACTIVATE
definiuje wartość właściwości type
obiektu zdarzenia deactivate
.
Uwaga: to zdarzenie nie zawiera fazy „przechwytywania” ani „propagacji”, co oznacza, że detektory zdarzeń muszą być dodawane bezpośrednio do każdego potencjalnego obiektu docelowego — niezależnie od tego, czy obiekt znajduje się na liście wyświetlania.
To zdarzenie nie jest nigdy automatycznie wywoływane na urządzeniach telewizyjnych ze środowiskiem AIR. Można wywołać je ręcznie.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Dowolna instancja klasy DisplayObject z detektorem zarejestrowanym dla zdarzenia deactivate . |
Powiązane elementy interfejsu API
EventDispatcherExample
i CustomDispatcher
(podklasę EventDispatcher
) do zademonstrowania sposobu tworzenia i wywoływania zdarzenia niestandardowego. Przykładowy kod realizuje następujące zadania:
- Konstruktor obiektu
EventDispatcherExample
tworzy zmienną lokalnądispatcher
i przypisuje jej nową instancję klasy CustomDispatcher. - W obiekcie
CustomDispatcher
konstruowany jest odpowiedni ciąg znaków, aby zdarzenie nosiło nazwęaction
, i deklarowana jest metodadoAction()
. Ta metoda tworzy zdarzenieaction
i wywołuje je za pomocą metodyEventDispatcher.dispatchEvent()
. - Następnie, przy użyciu właściwości
dispatcher
, dodawany jest detektor zdarzeńaction
oraz skojarzona z nim metoda będące subskrybentem,actionHandler()
, która drukuje informacje o wywołanym zdarzeniu. - Wywołanie metody
doAction()
powoduje wywołanie zdarzeniaaction
.
package { import flash.display.Sprite; import flash.events.Event; public class EventDispatcherExample extends Sprite { public function EventDispatcherExample() { var dispatcher:CustomDispatcher = new CustomDispatcher(); dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler); dispatcher.doAction(); } private function actionHandler(event:Event):void { trace("actionHandler: " + event); } } } import flash.events.EventDispatcher; import flash.events.Event; class CustomDispatcher extends EventDispatcher { public static var ACTION:String = "action"; public function doAction():void { dispatchEvent(new Event(CustomDispatcher.ACTION)); } }
Tue Jun 12 2018, 12:06 PM Z