Пакет | 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):void
leftExtension | свойство |
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):void
rightExtension | свойство |
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):void
shader | свойство |
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):void
topExtension | свойство |
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):void
ShaderFilter | () | Конструктор |
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