Пакет | flash.filters |
Класс | public class ShaderFilter |
Наследование | ShaderFilter ![]() ![]() |
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10 |
Новый фильтр можно создать с помощью конструктора new ShaderFilter()
. Выбор фильтра зависит от объекта, к которому требуется его применить:
filters
(наследуемое от класса DisplayObject). При задании объекту свойства filters
сам объект не модифицируется, а фильтр можно удалить через свойство filters
.BitmapData.applyFilter()
. При вызове applyFilter()
для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.При применении фильтра к визуализируемому объекту свойство cacheAsBitmap
этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap
.
Этот фильтр поддерживает масштабирование рабочей области. Тем не менее, он не поддерживает общее масштабирование, повороты и искажение. Если сам объект увеличен или уменьшен (т.е. если свойства scaleX
и scaleY
не равны 100%), фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой рабочей области.
Невозможно применить фильтр к изображениям, если их получившаяся длина или ширина превышает 2880 пикселов. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение окажется более 2880 пикселов в длину или в ширину.
Для задания экземпляра шейдера, который будет использоваться вместе с фильтром, необходимо передать экземпляр шейдера в виде аргумента конструктору ShaderFilter()
или задать его как значение свойства shader
.
Чтобы действие шейдера не было ограничено пределами объекта, к которому применен фильтр, пользуйтесь свойствами leftExtension
, rightExtension
, topExtension
и bottomExtension
.
См. также
Свойство | Определено | ||
---|---|---|---|
bottomExtension : int
Прирост в пикселах с нижней стороны целевого объекта. | ShaderFilter | ||
![]() | constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | |
leftExtension : int
Прирост в пикселах с левой стороны целевого объекта. | ShaderFilter | ||
![]() | prototype : Object [статические]
Ссылка на модель объекта класса или функции. | Object | |
rightExtension : int
Прирост в пикселах с правой стороны целевого объекта. | ShaderFilter | ||
shader : Shader
Шейдер для использования с этим фильтром. | ShaderFilter | ||
topExtension : int
Прирост в пикселах с верхней стороны целевого объекта. | ShaderFilter |
Метод | Определено | ||
---|---|---|---|
ShaderFilter(shader:Shader = null)
Создает новый фильтр "Шейдер". | ShaderFilter | ||
![]() |
Возвращает объект BitmapFilter, являющийся точной копией исходного объекта BitmapFilter. | BitmapFilter | |
![]() |
Показывает, определено ли заданное свойство для объекта. | Object | |
![]() |
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | |
![]() |
Показывает наличие заданного свойства и его перечисляемость. | Object | |
![]() |
Задает доступность динамического свойства для операций цикла. | Object | |
![]() |
Возвращает строковое представление заданного объекта. | Object | |
![]() |
Возвращает элементарное значение заданного объекта. | Object |
bottomExtension | свойство |
bottomExtension:int
[чтение и запись] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10 |
Прирост в пикселах с нижней стороны целевого объекта.
Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player вычисляет нормальные границы фрагмента ролика и расширяет их на основании значений leftExtension
, rightExtension
, topExtension
и bottomExtension
.
Значение по умолчанию 0
public function get bottomExtension():int
public function set bottomExtension(value:int):void
leftExtension | свойство |
leftExtension:int
[чтение и запись] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10 |
Прирост в пикселах с левой стороны целевого объекта.
Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player вычисляет нормальные границы фрагмента ролика и расширяет их на основании значений leftExtension
, rightExtension
, topExtension
и bottomExtension
.
Значение по умолчанию 0
public function get leftExtension():int
public function set leftExtension(value:int):void
rightExtension | свойство |
rightExtension:int
[чтение и запись] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10 |
Прирост в пикселах с правой стороны целевого объекта.
Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player вычисляет нормальные границы фрагмента ролика и расширяет их на основании значений leftExtension
, rightExtension
, topExtension
и bottomExtension
.
Значение по умолчанию 0
public function get rightExtension():int
public function set rightExtension(value:int):void
shader | свойство |
shader:Shader
[чтение и запись] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10 |
Шейдер для использования с этим фильтром.
Шейдер, назначенный свойству shader
, должен указывать хотя бы на одно входное значение image4
. В коде не обязательно указывать код с помощью ассоциативного свойства input
объекта ShaderInput. Вместо этого объект, к которому применяется фильтр, автоматически становится первым значением входа (вход с индексом
0). Шейдер, используемый в качестве фильтра, может задавать более одного входа. В этом случае любые дополнительные входы должны быть заданы через свойство input
экземпляра ShaderInput.
При назначении экземпляра шейдера данному свойству создается внутренняя копия шейдера, а операция фильтра использует эту копию, а не ссылку на исходный файл Все изменения, производимые над шейдером, например изменение значения параметров, входа или байт-кода, не влияют на скопированный шейдер, к которому обращается фильтр. Чтобы изменения отражались и на шейдере при выводе результатов фильтра, необходимо переназначить экземпляр шейдера свойству shader
.
public function get shader():Shader
public function set shader(value:Shader):void
topExtension | свойство |
topExtension:int
[чтение и запись] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10 |
Прирост в пикселах с верхней стороны целевого объекта.
Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player вычисляет нормальные границы фрагмента ролика и расширяет их на основании значений leftExtension
, rightExtension
, topExtension
и bottomExtension
.
Значение по умолчанию 0
public function get topExtension():int
public function set topExtension(value:int):void
ShaderFilter | () | Конструктор |
public function ShaderFilter(shader:Shader = null)
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10 |
Создает новый фильтр "Шейдер".
Параметрыshader:Shader (default = null ) — Шейдер для использования с этим фильтром. Подробные сведения и ограничения, которым должен подчиняться шейдер, см. в описании свойства shader .
|
См. также
shader
класса ShaderFilter. Этот код рисует круг в экземпляре спрайта и добавляет его к сцене. При загрузке шейдера к этому спрайту применяется фильтр шейдера.
Обратите внимание, что в этом примере мы исходим из того, что существует некий файл байт-кодов с именем "gradient.hbc", хранящийся в каталоге, который является выходным для приложения.
// // Source code for the shader: // <languageVersion : 1.0;> kernel DoNothing < nameSpace: "Adobe::Example"; version: 1; description: "Applies a gradient across the red channel of the input image."; > { input image4 src; output pixel4 dst; parameter float width < description: "The width of the image to which the shader is applied."; minValue: 0.0; >; void evaluatePixel() { pixel4 temp = sampleNearest(src, outCoord()); temp.r = 1.0 - (outCoord().x * (1.0 / width)); dst = temp; } } // // ActionScript source code: // package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.filters.ShaderFilter; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class ShaderFilterExample extends Sprite { private var loader:URLLoader; private var s:Sprite; public function ShaderFilterExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("gradient.hbc")); s = new Sprite(); s.graphics.beginFill(0x009900); s.graphics.drawCircle(100, 100, 100); addChild(s); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(loader.data); shader.data.width.value = [s.width]; var gradientFilter:ShaderFilter = new ShaderFilter(shader); s.filters = [gradientFilter]; } } }