| Пакет | flash.filters |
| Класс | public class ShaderFilter |
| Наследование | ShaderFilter BitmapFilter Object |
| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Новый фильтр можно создать с помощью конструктора new ShaderFilter(). Выбор фильтра зависит от объекта, к которому требуется его применить:
- Если фильтр применяется к фрагментам ролика, текстовым полям, кнопкам или видео, следует использовать свойство
filters(наследуемое от класса DisplayObject). При задании объекту свойстваfiltersсам объект не изменяется, а фильтр можно удалить через свойствоfilters. - Для применения фильтров к объектам BitmapData следует пользоваться методом
BitmapData.applyFilter(). При вызовеapplyFilter()для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.
При применении фильтра к экранному объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.
Этот фильтр поддерживает масштабирование рабочей области. Тем не менее, он не поддерживает общее масштабирование, повороты и искажение. Если сам объект увеличен или уменьшен (т. е. если свойства scaleX и scaleY не равны 100%), фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой рабочей области.
Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.
Для задания экземпляра Shader, который будет использоваться вместе с фильтром, необходимо передать экземпляр Shader в виде аргумента конструктору ShaderFilter() или задать его как значение свойства shader.
Чтобы действие Shader не было ограничено пределами объекта, к которому применен фильтр, пользуйтесь свойствами leftExtension, rightExtension, topExtension и bottomExtension.
Связанные элементы API
flash.display.DisplayObject.cacheAsBitmap
flash.display.BitmapData.applyFilter()
flash.display.Shader
| Свойство | Определено | ||
|---|---|---|---|
| bottomExtension : int
Прирост в пикселях с нижней стороны целевого объекта. | ShaderFilter | ||
![]() | constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | |
| leftExtension : int
Прирост в пикселях с левой стороны целевого объекта. | ShaderFilter | ||
| rightExtension : int
Прирост в пикселях с правой стороны целевого объекта. | ShaderFilter | ||
| shader : Shader
Шейдер для использования с этим фильтром. | ShaderFilter | ||
| topExtension : int
Прирост в пикселях с верхней стороны целевого объекта. | ShaderFilter | ||
| Метод | Определено | ||
|---|---|---|---|
ShaderFilter(shader:Shader = null)
Создает новый фильтр «Шейдер». | ShaderFilter | ||
![]() |
Возвращает объект BitmapFilter, являющийся точной копией исходного объекта BitmapFilter. | BitmapFilter | |
![]() |
Показывает, определено ли заданное свойство для объекта. | Object | |
![]() |
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | |
![]() |
Показывает наличие заданного свойства и его перечисляемость. | Object | |
![]() |
Задает доступность динамического свойства для операций цикла. | Object | |
![]() |
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | |
![]() |
Возвращает строковое представление заданного объекта. | Object | |
![]() |
Возвращает элементарное значение заданного объекта. | Object | |
bottomExtension | свойство |
bottomExtension:int| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Прирост в пикселях с нижней стороны целевого объекта.
Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player или AIR вычисляет нормальные границы фрагмента ролика и расширяет их в соответствии со значениями leftExtension, rightExtension, topExtension и bottomExtension.
Значением по умолчанию является 0.
Реализация
public function get bottomExtension():int public function set bottomExtension(value:int):voidleftExtension | свойство |
leftExtension:int| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Прирост в пикселях с левой стороны целевого объекта.
Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player или AIR вычисляет нормальные границы фрагмента ролика и расширяет их в соответствии со значениями leftExtension, rightExtension, topExtension и bottomExtension.
Значением по умолчанию является 0.
Реализация
public function get leftExtension():int public function set leftExtension(value:int):voidrightExtension | свойство |
rightExtension:int| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Прирост в пикселях с правой стороны целевого объекта.
Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player или AIR вычисляет нормальные границы фрагмента ролика и расширяет их в соответствии со значениями leftExtension, rightExtension, topExtension и bottomExtension.
Значением по умолчанию является 0.
Реализация
public function get rightExtension():int public function set rightExtension(value:int):voidshader | свойство |
shader:Shader| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Шейдер для использования с этим фильтром.
Шейдер, назначенный свойству shader, должен указывать хотя бы на одно входное значение image4. В коде не обязательно указывать код с помощью ассоциативного свойства input объекта ShaderInput. Вместо этого объект, к которому применяется фильтр, автоматически становится первым значением входа (вход с index 0). Шейдер, используемый в качестве фильтра, может задавать более одного входа. В этом случае любые дополнительные входы должны быть заданы через свойство input экземпляра ShaderInput.
При назначении экземпляра шейдера данному свойству создается внутренняя копия шейдера, а операция фильтра использует эту копию, а не ссылку на исходный файл Все изменения, производимые над шейдером, например изменение значения параметров, входа или байт-кода, не влияют на скопированный шейдер, к которому обращается фильтр. Чтобы изменения отражались и на шейдере при выводе результатов фильтра, необходимо переназначить экземпляр шейдера свойству shader. Как и в случае с другими фильтрами, чтобы применить изменения фильтра, необходимо также повторно назначить экземпляр ShaderFilter свойству filters экранного объекта.
Реализация
public function get shader():Shader public function set shader(value:Shader):voidtopExtension | свойство |
topExtension:int| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Прирост в пикселях с верхней стороны целевого объекта.
Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player или AIR вычисляет нормальные границы фрагмента ролика и расширяет их в соответствии со значениями leftExtension, rightExtension, topExtension и bottomExtension.
Значением по умолчанию является 0.
Реализация
public function get topExtension():int public function set topExtension(value:int):voidShaderFilter | () | Конструктор |
public function ShaderFilter(shader:Shader = null)| Язык версии: | ActionScript 3.0 |
| Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Создает новый фильтр «Шейдер».
Параметрыshader:Shader (default = null) — Шейдер для использования с этим фильтром. Подробные сведения и ограничения, которым должен подчиняться шейдер, см. в описании свойства shader.
|
Связанные элементы API
shader класса ShaderFilter. Этот код рисует круг в экземпляре спрайта и добавляет его к сцене. При загрузке шейдера к этому спрайту применяется фильтр шейдера.
Обратите внимание, что в этом примере мы исходим из того, что существует файл байт-кодов с именем gradient.pbj, хранящийся в каталоге, который является выходным для приложения.
//
// Source code for the shader:
//
<languageVersion : 1.0;>
kernel RedGradientFilter
<
namespace: "Adobe::Example";
vendor: "Adobe examples";
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.pbj"));
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];
}
}
}
Tue Jun 12 2018, 11:34 AM Z
Скрыть унаследованные общедоступные свойства
Показать унаследованные общедоступные свойства