Pakiet | flash.display |
Klasa | public class ShaderJob |
Dziedziczenie | ShaderJob EventDispatcher Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Istnieją dwa podstawowe powody używania modułu cieniującego do wykonywania operacji w trybie autonomicznym:
- Przetwarzanie danych niegraficznych: Korzystając z instancji ShaderJob programista ma kontrolę nad wartościami wejściowymi oraz nad sposobem użycia wynikowych danych modułu cieniującego. Moduł cieniujący może zwrócić wynik w postaci danych binarnych lub numerycznych zamiast danych obrazu.
- Przetwarzanie w tle: Niektóre moduły cieniujące są złożone i do ich wykonania wymagana jest znaczna ilość czasu. Wykonywanie złożonych operacji modułów cieniujących w głównym wątku wykonywania aplikacji może spowalniać wykonywanie innych operacji w aplikacji, takich jak interakcja z użytkownikiem lub aktualizowanie obrazu na ekranie. Za pomocą instancji ShaderJob operacje modułu cieniowania można wykonać w tle. Jeśli moduł cieniujący uruchomiony zostanie w ten sposób, operacje modułu cieniującego wykonywane są poza głównym wątkiem wykonywania aplikacji.
Właściwość shader
(lub parametr konstruktora) określa instancję modułu cieniującego reprezentującą moduł używany dla operacji. Należy wprowadzić dowolny parametr lub dane wejściowe, jakich oczekuje moduł cieniujący, korzystając ze skojarzonej instancji ShaderParameter lub ShaderInput.
Przed wykonaniem operacji ShaderJob należy dostarczyć obiekt, w którym zapisany został wynik, ustawiając go jako wartość we właściwości target
. Po zakończeniu operacji modułu cieniującego wynik zostanie zapisany do obiektu target
.
Aby rozpocząć operację modułu cieniującego w tle, należy wywołać metodę start()
. Po zakończeniu operacji wynik zostanie zapisany do obiektu target
. Następnie instancja ShaderJob wywołuje zdarzenie complete
, które informuje detektory o dostępności wyników.
Aby uruchomić moduł cieniujący synchronicznie (tzn. nie uruchamiając go w tle), należy wywołać metodę start()
i przekazać jako argument wartość true
. Moduł cieniujący uruchamiany jest w głównym wykonawczym, a wykonywanie kodu programisty jest wstrzymywane do momentu zakończenia operacji. Po zakończeniu wyniki zostaną zapisane do obiektu target
. Następnie aplikacja kontynuuje działanie, rozpoczynając od kolejnego wiersza kodu.
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
height : int
Wysokość danych wynikowych w obiekcie target, jeśli jest to ByteArray lub Vector.Wystąpienie klasy <Number> | ShaderJob | ||
progress : Number [tylko do odczytu]
Postęp działania modułu cieniującego. | ShaderJob | ||
shader : Shader
Moduł cieniujący, jaki jest używany dla operacji. | ShaderJob | ||
target : Object
Obiekt, do którego zapisywany jest wynik operacji modułu cieniującego. | ShaderJob | ||
width : int
Szerokość danych wynikowych w obiekcie target, jeśli jest to ByteArray lub Vector.Instancja <Number> | ShaderJob |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
ShaderJob | |||
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 | ||
Anuluje aktualnie działającą operację modułu cieniującego. | ShaderJob | ||
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 | ||
Rozpoczyna operację modułu cieniującego w trybie synchronicznym lub asynchronicznym zgodnie z wartością parametru waitForCompletion. | ShaderJob | ||
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 | |||
Wywoływane, gdy instancja ShaderJob, która wykonywana jest w sposób asynchroniczny, zakończy przetwarzanie danych z użyciem modułu cieniującego. | ShaderJob | |||
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. | EventDispatcher |
height | właściwość |
height:int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Wysokość danych wynikowych w obiekcie target
, jeśli jest to ByteArray lub Vector.Instancja <Number>. Wielkość argumentu ByteArray lub Vector.Instancja <Number> może zostać powiększona w razie potrzeby, a istniejące dane są zastępowane.
Implementacja
public function get height():int
public function set height(value:int):void
progress | właściwość |
progress:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Postęp działania modułu cieniującego. Ta właściwość jest wartością z zakresu od 0 do 1. Zero jest wartością początkową (ukończenie: 0%). Jeden oznacza, że moduł cieniujący zakończył operację.
Jeśli zostanie wywołana metoda cancel()
, ta właściwość będzie miała wartość undefined
, a z jej wartości nie można będzie korzystać niezawodnie do czasu ponownego uruchomienia operacji modułu cieniującego.
Implementacja
public function get progress():Number
shader | właściwość |
shader:Shader
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Moduł cieniujący, jaki jest używany dla operacji. Wszelkie dane wejściowe lub parametry, których oczekuje moduł cieniujący, należy wprowadzić za pomocą właściwości ShaderInput lub ShaderParameter, która należy do właściwości data
instancji modułu cieniującego. Dane wejściowe należy wprowadzić za pomocą odpowiedniego obiektu ShaderInput, nawet jeśli jest on taki sam, jak obiekt target
.
W celu przetworzenia tablicy ByteArray zawierającej tablicę liniową danych (w przeciwieństwie do danych obrazu) należy ustawić 1 dla wartości height
odpowiedniej instancji ShaderInput, a dla width
należy ustawić liczbę zmiennoprzecinkowych wartości 32-bitowych w tablicy ByteArray. W takim przypadku dane wejściowe modułu cieniującego należy zdefiniować z typem danych image1
.
Implementacja
public function get shader():Shader
public function set shader(value:Shader):void
Powiązane elementy interfejsu API
target | właściwość |
target:Object
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Obiekt, do którego zapisywany jest wynik operacji modułu cieniującego. Ten obiekt musi być jednym z następujących: BitmapData, ByteArray lub Vector.Instancja <Number>.
Implementacja
public function get target():Object
public function set target(value:Object):void
width | właściwość |
width:int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Szerokość danych wynikowych w obiekcie target
, jeśli jest to ByteArray lub Vector.Instancja <Number>. Wielkość argumentu ByteArray lub Vector.Instancja <Number> może zostać powiększona w razie potrzeby, a istniejące dane są zastępowane.
Implementacja
public function get width():int
public function set width(value:int):void
ShaderJob | () | Konstruktor |
public function ShaderJob(shader:Shader = null, target:Object = null, width:int = 0, height:int = 0)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Parametry
shader:Shader (default = null ) — Moduł cieniujący, jaki ma być używany dla operacji.
| |
target:Object (default = null ) — Obiekt, do którego zapisywany jest wynik operacji modułu cieniującego. Ten argument musi być jednym z następujących: BitmapData, ByteArray lub Vector.Wystąpienie klasy <Number>.
| |
width:int (default = 0 ) — Szerokość danych wynikowych w obiekcie target , jeśli jest to ByteArray lub Vector.Instancja <Number>. Wielkość argumentu ByteArray lub Vector.Instancja <Number> może zostać powiększona w razie potrzeby, a istniejące dane są zastępowane.
| |
height:int (default = 0 ) — Wysokość danych wynikowych w obiekcie target , jeśli jest to ByteArray lub Vector.Instancja <Number>. Wielkość argumentu ByteArray lub Vector.Instancja <Number> może zostać powiększona w razie potrzeby, a istniejące dane są zastępowane.
|
cancel | () | metoda |
public function cancel():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Anuluje aktualnie działającą operację modułu cieniującego. Wszelkie dane wynikowe, które zostały już obliczone, są usuwane. Zdarzenie complete
nie jest wywoływane.
Wielokrotne wywoływanie metody cancel()
nie ma żadnych dodatkowych skutków.
start | () | metoda |
public function start(waitForCompletion:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Rozpoczyna operację modułu cieniującego w trybie synchronicznym lub asynchronicznym zgodnie z wartością parametru waitForCompletion
.
W trybie asynchronicznym (gdy parametr waitForCompletion
ma wartość false
), który jest trybem domyślnym, wykonanie ShaderJob uruchamiane jest w tle. Operacja modułu cieniującego nie wpływa na wydajność reagowania monitora ani wykonywania innych operacji. W trybie asynchronicznym wywołanie metody start()
powoduje natychmiastowy powrót i kontynuację programu w kolejnym wierszu kodu. Po zakończeniu asynchronicznej operacji modułu cieniującego wynik jest udostępniany i wywoływane jest zdarzenie complete
.
Jednocześnie w tle może być wykonywana tylko jedna operacja ShaderJob. Operacje modułu cieniującego są przetrzymywane w kolejce do czasu ich wykonania. W przypadku wywołania metody start()
podczas wykonywania operacji modułu cieniującego, dodatkowa operacja jest umieszczana na końcu kolejki. Operacja zostanie wykonywana, gdy nadejdzie jej kolej.
Aby wykonać operację modułu cieniującego w trybie synchronicznym, należy wywołać metodę start()
z wartością true
dla parametru waitForCompletion
(jedynego parametru). Kod zostanie wstrzymany w miejscu wywołania metody start()
do momentu zakończenia operacji modułu cieniującego. W tym miejscu wynik jest dostępny, a wykonanie kontynuowane jest w kolejnym wierszu kodu.
Po wywołaniu metody start()
instancja modułu cieniującego we właściwości shader
zostanie skopiowana wewnętrznie. Podczas operacji modułu cieniującego używana jest kopia wewnętrzna, a nie odwołanie do oryginalnego modułu cieniującego. Wszelkie zmiany modułu cieniującego, takie jak zmiana wartości parametru, obiektu wejściowego lub kodu bajtowego, nie są stosowane do modułu skopiowanego, który jest używany podczas przetwarzania modułu cieniującego. W celu uwzględnienia zmian modułu cieniującego w przetwarzaniu tego modułu należy wywołać metodę cancel()
(w razie potrzeby), a następnie ponownie wywołać metodę start()
w celu ponownego przetwarzania modułu cieniującego.
Podczas wykonywania operacji modułu cieniującego wartość obiektu target
nie jest zmieniana. Po zakończeniu operacji (i wywołaniu zdarzenia complete
w trybie asynchronicznym) cały wynik jest jednorazowo zapisywany w obiekcie target
. Jeśli obiekt target
jest instancją BitmapData, a jego metoda dispose()
zostanie wywołana przed zakończeniem operacji, zdarzenie complete
będzie nadal wywoływane w trybie asynchronicznym. Jednak dane wynikowe nie zostaną zapisane do obiektu BitmapData, ponieważ obiekt znajduje się w stanie usuwania.
Parametry
waitForCompletion:Boolean (default = false ) — Określa, czy moduł cieniujący uruchamiany jest w tle (wartość false — domyślnie), czy w głównym wątku wykonania (wartość true ).
|
Zdarzenia
complete: — Wywoływane po zakończeniu operacji, jeśli metoda start() zostanie wywołana z argumentem waitForCompletion równym true .
|
Zgłasza
ArgumentError — Gdy właściwość target ma wartość lub jest inna niż BitmapData, ByteArray albo Vector. Wystąpienie klasy <Number>.
| |
ArgumentError — Gdy moduł cieniujący określa obraz wejściowy, które nie został udostępniony.
| |
ArgumentError — W przypadku filtrów ByteArray lub Vector.Instancja <Number> jest używana jako obiekt wejściowy, a właściwości width i height nie zostały określone dla ShaderInput, lub określone wartości nie są zgodne z ilością danych w obiekcie wejściowym. Więcej informacji można znaleźć w opisie właściwości ShaderInput.input .
|
complete | Zdarzenie |
flash.events.ShaderEvent
właściwość ShaderEvent.type =
flash.events.ShaderEvent.COMPLETE
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Wywoływane, gdy instancja ShaderJob, która wykonywana jest w sposób asynchroniczny, zakończy przetwarzanie danych z użyciem modułu cieniującego. Instancja ShaderJob wykonywana jest w sposób asynchroniczny, gdy metoda start()
wywołana zostanie z wartością false
dla parametru waitForCompletion
.
type
obiektu zdarzenia complete
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
bitmapData | Obiekt BitmapData zawierający wynik zakończonej operacji (lub null , jeśli obiektem docelowym nie był obiekt BitmapData). |
byteArray | Obiekt ByteArray zawierający wynik zakończonej operacji (lub null , jeśli obiektem docelowym nie był obiekt ByteArray). |
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 | Obiekt ShaderJob zgłaszający zakończenie. |
vector | Obiekt Vector.Instancja <Number> zawierająca wynik zakończonej operacji (lub null , jeśli obiektem docelowym nie była instancja Vector<Number>). |
Tue Jun 12 2018, 12:06 PM Z