Пакет | flash.display |
Класс | public class ShaderJob |
Наследование | ShaderJob EventDispatcher Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Существует две основные причины использования затенения в автономном режиме.
- Обработка данных, отличных от изображений: при использовании экземпляра ShaderJob можно управлять входными значениями и способами использования результатов затенения. Операция затенения может возвращать результаты в виде двоичных данных или числовых данных вместо данных изображений.
- Фоновая обработка: некоторые операции затенения являются достаточно сложными, и на их выполнение требуется много времени. Выполнение сложной операции затенения в основном потоке выполнения приложения может замедлить другие части приложения, например, реакцию на действия пользователя или обновление экрана. С помощью экземпляра ShaderJob можно выполнить операцию затенения в фоновом режиме. Таким способом операция затенения выполняется отдельно от основного потока приложения.
Свойство shader
(или параметр конструктора) определяет экземпляр Shader, представляющий используемое в данной операции затенение. Параметры и входы, используемые затенением, настраиваются с помощью связанных экземпляров ShaderParameter или ShaderInput.
Перед выполнением операции ShaderJob необходимо указать объект, в который записывается результат, путем его настройки в качестве значения свойства target
. По завершении операции затенения результат записывается в объект target
.
Чтобы начать операцию фонового затенения, вызовите метод start()
. По завершении операции затенения результат записывается в объект target
. В этот момент экземпляр ShaderJob отправляет событие complete
, уведомляя прослушивателей о наличии готового результата.
Для синхронного выполнения затенения (то есть не в фоновом режиме) вызовите метод start()
и передайте значение true
в качестве аргумента. Затенение выполняется в основном потоке выполнения, и выполнение кода приостанавливается до завершения операции. После выполнения операции результаты сохраняются в объекте target
. В этой точке приложение продолжает выполнение следующей строки кода.
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
height : int
Высота результирующих данных в target, если аргументом является экземпляр ByteArray или Vector.<Number>. | ShaderJob | ||
progress : Number [только для чтения]
Прогресс выполнения запущенной операции затенения. | ShaderJob | ||
shader : Shader
Используемое в операции затенение. | ShaderJob | ||
target : Object
Объект, в который сохраняется результат вычисления операции затенения. | ShaderJob | ||
width : int
Ширина данных результата в target, если он является экземпляром ByteArray или Vector.<Number>. | ShaderJob |
Метод | Определено | ||
---|---|---|---|
ShaderJob | |||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | ||
Отменяет текущую запущенную операцию затенения. | ShaderJob | ||
Посылает событие в поток событий. | EventDispatcher | ||
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Запуск операции затенения в синхронном или асинхронном режиме в соответствии со значением параметра waitForCompletion. | ShaderJob | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object | ||
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher |
Событие | Сводка | Определено | ||
---|---|---|---|---|
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. | EventDispatcher | |||
Отправка по завершении обработки данных с использованием затенения заданием ShaderJob, которое выполняется асинхронно. | ShaderJob | |||
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным. | EventDispatcher |
height | свойство |
height:int
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Высота результирующих данных в target
, если аргументом является экземпляр ByteArray или Vector.<Number>. Размер экземпляра ByteArray или Vector.<Number> при необходимости расширяется, а существующие данные перезаписываются.
Реализация
public function get height():int
public function set height(value:int):void
progress | свойство |
progress:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Прогресс выполнения запущенной операции затенения. Значение находится в диапазоне от 0 до 1. В значении 0 прогресс выполнения находится на отметке 0%. Значение 1 указывает на завершение операции.
При вызове метода cancel()
значение этого свойства становится undefined
и уже не отображает реального значения прогресса при повторном запуске операции.
Реализация
public function get progress():Number
shader | свойство |
shader:Shader
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Используемое в операции затенение. Все параметры и вводы для операции затенения задаются в свойствах data
экземпляра Shader, а именно ShaderInput или ShaderParameter. Ввод задается соответствующим свойством ShaderInput, даже если он совпадает с объектом target
.
Для обработки массива ByteArray, данные в котором расположены линейно (в отличие от данных изображения), задайте параметры соответствующего экземпляра ShaderInput следующим образом: для height
установите значение 1, для width
— число 32-разрядных значений с плавающей запятой в массиве ByteArray. В этом случае значение ввода затенения должно принадлежать типу данных image1
.
Реализация
public function get shader():Shader
public function set shader(value:Shader):void
Связанные элементы API
target | свойство |
target:Object
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Объект, в который сохраняется результат вычисления операции затенения. Этот объект может быть экземпляром BitmapData, ByteArray или Vector.<Number>.
Реализация
public function get target():Object
public function set target(value:Object):void
width | свойство |
width:int
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Ширина результирующих данных в target
, если экземпляром является ByteArray или Vector.<Number>. Размер экземпляра ByteArray или Vector.<Number> при необходимости расширяется, а существующие данные перезаписываются.
Реализация
public function get width():int
public function set width(value:int):void
ShaderJob | () | Конструктор |
public function ShaderJob(shader:Shader = null, target:Object = null, width:int = 0, height:int = 0)
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Параметры
shader:Shader (default = null ) — Используемое в операции затенение.
| |
target:Object (default = null ) — Объект, в который сохраняется результат вычисления операции затенения. Аргументом может быть экземпляр BitmapData, ByteArray или Vector.<Number>.
| |
width:int (default = 0 ) — Ширина результирующих данных в target , если экземпляром является ByteArray или Vector.<Number>. Размер экземпляра ByteArray или Vector.<Number> при необходимости расширяется, а существующие данные перезаписываются.
| |
height:int (default = 0 ) — Высота результирующих данных в target , если аргументом является экземпляр ByteArray или Vector.<Number>. Размер экземпляра ByteArray или Vector.<Number> при необходимости расширяется, а существующие данные перезаписываются.
|
cancel | () | метод |
public function cancel():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Отменяет текущую запущенную операцию затенения. Все полученные в результате вычислений данные игнорируются. Событие complete
не отправляется.
Многократный вызов метода cancel()
не действует.
start | () | метод |
public function start(waitForCompletion:Boolean = false):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Запуск операции затенения в синхронном или асинхронном режиме в соответствии со значением параметра waitForCompletion
.
В асинхронном режиме (если для параметра waitForCompletion
задано значение false
), который является режимом по умолчанию, выполнение ShaderJob осуществляется в фоновом режиме. Операция затенения не влияет на быстроту реакции отображения или других операций. В асинхронном режиме вызов метода start()
происходит немедленно и в программе продолжается выполнение следующей строки кода. По завершении выполнения операции затенения в фоновом режиме доступен результат и выполняется отправка события complete
.
Одновременно может выполняться только одна фоновая операция ShaderJob. Все операции затенения помещаются в очередь и выполняются последовательно. При вызове метода start()
во время выполнения операции затенения еще одна операция добавляется в конец очереди. Впоследствии, когда наступает очередь, она выполняется.
Чтобы выполнить операцию затенения в синхронном режиме, вызовите метод start()
со значением true
для параметра waitForCompletion
(единственный параметр). Выполнение кода приостанавливается в точке вызова метода start()
до завершения операции затенения. В этой точке доступен результат, и продолжается выполнение следующей строки кода.
При вызове метода start()
происходит копирование на внутреннем уровне экземпляра Shader в свойстве shader
. При выполнении операции затенения используется эта копия, а не ссылка на исходное затенение. Изменения параметров затенения (изменение значения параметра, ввода или байт-кода) не влияют на используемую для обработки затенения копию затенения. Для внедрения изменений в операцию затенения произведите вызов метода cancel()
(при необходимости) и повторно вызовите метод start()
, чтобы запустить операцию обработки затенения.
На время выполнения операции затенения значение объекта target
остается неизменным. По завершении операции (и выполнения отправки события complete
в асинхронном режиме) все результаты одновременно записываются в объект target
. Если объект target
является экземпляром BitmapData и его метод dispose()
вызывается до завершения операции, отправка события complete
выполняется в асинхронном режиме. В таком случае, данные в объект BitmapData не сохраняются, так как его не существует.
Параметры
waitForCompletion:Boolean (default = false ) — Определение необходимости выполнения затенения в фоновом режиме (по умолчанию false ) или в основном потоке выполнения программы (true ).
|
События
complete: — Передается по завершении операции, если метод start() вызывается со значением true аргумента waitForCompletion .
|
Выдает
ArgumentError — Если свойство target принимает значение null или не является экземпляром BitmapData, ByteArray или Vector.<Number>.
| |
ArgumentError — Если затенение задает неподдерживаемое входное изображение.
| |
ArgumentError — Если экземпляр ByteArray или Vector.<Number> используется в качестве ввода, а свойства width и height для ShaderInput не указаны либо указанные значения не соответствуют количеству данных во входном объекте. Дополнительные сведения см. в описании ShaderInput.input .
|
complete | Событие |
flash.events.ShaderEvent
свойство ShaderEvent.type =
flash.events.ShaderEvent.COMPLETE
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Отправка по завершении обработки данных с использованием затенения заданием ShaderJob, которое выполняется асинхронно. Экземпляр ShaderJob выполняется асинхронно при вызове метода start()
со значением false
для параметра waitForCompletion
.
type
для объекта события complete
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
bitmapData | Объект BitmapData, содержащий результаты выполненной операции (или null , если целевым объектом не являлся объект BitmapData). |
byteArray | Объект ByteArray, содержащий результаты выполненной операции (или null , если целевым объектом не являлся объект ByteArray). |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Объект ShaderJob, сообщающий о завершении выполнения задачи. |
vector | Экземпляр Vector.<Number>, содержащий результаты выполненной операции (или null , если целевым объектом не являлся экземпляр Vector.<Number>). |
Tue Jun 12 2018, 11:34 AM Z