Пакет | spark.effects |
Класс | public class AnimateTransitionShader |
Наследование | AnimateTransitionShader Animate Effect EventDispatcher Object |
Подклассы | CrossFade, Wipe |
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 4 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Эффект AnimateTransitionShader использует Pixel Bender, который не поддерживается в мобильных приложениях AIR. |
Эффект AnimateTransitionShader анимирует переход между двумя растровыми изображениями, представляющими собой начальное (
bitmapFrom
) и конечное состояния (bitmapTo
).
Анимация выполняется посредством запуска программы затенения пикселей, заданной свойством shader
, которое использует два растровых изображения в качестве входных данных. Растровые изображения представлены экземпляром класса flash.display.BitmapData. Собственную программу затенения пикселей можно создать при помощи Adobe Pixel Bender Toolkit.
Если ни одно растровое изображение не предоставлено, то значение будет определяться динамически либо из соответствующего состояния целевого объекта при переходе, либо непосредственно из целевого объекта, если эффект не выполняется при переходе. Если данный эффект выполняется при переходе и целевой объект в течение изменения состояния исчезает или появляется, то для представления этого объекта используется полностью прозрачное растровое изображение.
Этот эффект может быть выполнен только для целевых объектов, которые являются UIComponents или GraphicElements, поскольку получение растровых изображений объекта требует наличие информации о данном объекте, существующей только в этих классах.
Поскольку эффект основан на растровом изображении, а для основной программы затенения пикселей необходимо наличие двух растровых изображений одинакового размера, то эффект будет работать правильно только в том случае, когда оба растровых изображения имеют одинаковый размер. Это означает, что если происходит изменение размера или ориентации целевого объекта, приводящее к изменению размеров ограничительной рамки, то эффект может воспроизводиться неправильно.
Этот эффект и его подклассы отличаются от эффектов Flex, в котором они работают другим образом, и вероятно не дадут намеченного результата при параллельном выполнении с другими эффектами. Это ограничение обусловлено тем, что предшествующее и последующее изображения получены до начала эффекта. Если с целевым объектом происходят какие-либо изменения после вычислений данных растровых изображений, например другой эффект изменяет свойства целевого объекта, то эти изменения не будут приняты в расчет предварительно вычисленного растрового изображения и результаты не будут соответствовать ожидаемым. Для обеспечения корректного воспроизведения данных эффектов, основанных на растровом изображении, они должны воспроизводиться исключительно на своих целевых объектах.
Синтаксис MXMLСкрыть синтаксис MXMLThe <s:AnimateTransitionShader>
tag
inherits all of the tag attributes of its superclass,
and adds the following tag attributes:
<s:AnimateTransitionShader Properties id="ID" bitmapFrom="no default" bitmapTo="no default" shaderByteCode="no default" sahderProperties="no default" />
Свойство MXML по умолчаниюmotionPaths
Связанные элементы API
spark.effects.supportClasses.AnimateTransitionShaderInstance
spark.primitives.supportClasses.GraphicElement
Свойство | Определено | ||
---|---|---|---|
bitmapFrom : BitmapData
Данные растрового изображения, представляющие начальное состояние эффекта. | AnimateTransitionShader | ||
bitmapTo : BitmapData
Растровые данные, представляющие конечное состояние эффекта. | AnimateTransitionShader | ||
className : String [только для чтения]
Имя класса эффекта, например Fade. | Effect | ||
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
customFilter : mx.effects:EffectTargetFilter
Указывает пользовательский объект фильтра типа EffectTargetFilter, используемый эффектом для определения целевых объектов, для которых должен воспроизводиться эффект. | Effect | ||
disableLayout : Boolean
Если значение равно true, эффект отключает макет на вышестоящих контейнерах его целевых объектов, устанавливая для свойства autoLayout контейнеров значение false, а также отключает любые ограничения макета на целевые объекты. | Animate | ||
duration : Number
Продолжительность эффекта в миллисекундах. | Effect | ||
easer : IEaser
Реакция замедления для этого эффекта. | Animate | ||
effectTargetHost : mx.effects:IEffectTargetHost
Свойства, позволяющие получить доступ к целевому элементу управления на основе списка для эффекта данных. | Effect | ||
filter : String
Указывает алгоритм фильтрации целевых объектов для эффекта. | Effect | ||
hideFocusRing : Boolean
Определяет, должен ли эффект скрыть кольцо фокуса при запуске. | Effect | ||
instanceClass : Class
Объект типа Class, указывающий класс класса экземпляра эффекта для данного класса эффекта. | Effect | ||
interpolator : IInterpolator
Для вычисления значений между начальными и конечными значениями свойства данным эффектом используется интерполятор. | Animate | ||
isPlaying : Boolean [только для чтения]
Флаг только для чтения, принимающий значение true, если какой-либо экземпляр эффекта воспроизводится в настоящее время, и false в противном случае. | Effect | ||
motionPaths : Vector.<MotionPath>
Вектор объектов MotionPath, каждый из которых содержит имя подлежащего анимации свойства и значения, которые данное свойство принимает в процессе анимации. | Animate | ||
perElementOffset : Number
Дополнительная задержка (в миллисекундах) для целевых объектов эффекта, обрабатываемых после первого целевого объекта эффекта. | Effect | ||
playheadTime : Number
Текущая позиция эффекта. | Effect | ||
relevantProperties : Array
Массив имен свойств, используемых при выполнении фильтрации. | Effect | ||
relevantStyles : Array
Массив имен стилей, используемых при выполнении фильтрации. | Effect | ||
repeatBehavior : String
Поведение повторяющегося эффекта, то есть эффекта со значением repeatCount, равным 0 или > 1. | Animate | ||
repeatCount : int = 1
Число повторов эффекта. | Effect | ||
repeatDelay : int = 0
Время ожидания (в миллисекундах) перед повторением эффекта. | Effect | ||
shaderByteCode : Object
Байт-код для программы затенения пикселей, которую эффект использует для анимации между двумя данными растровыми изображениями. | AnimateTransitionShader | ||
shaderProperties : Object
Схема пары «имя/значение» параметра передается в программу затенения пикселей до воспроизведения. | AnimateTransitionShader | ||
startDelay : int = 0
Время ожидания (в миллисекундах) перед запуском эффекта. | Effect | ||
target : Object
Объект, к которому применяется данный эффект. | Effect | ||
targets : Array
Массив объектов, являющихся целевыми объектами эффекта. | Effect | ||
triggerEvent : Event
Объект Event, переданный в Effect с помощью EffectManager при запуске эффекта, или null, если эффект воспроизводится без EffectManager. | Effect |
Метод | Определено | ||
---|---|---|---|
AnimateTransitionShader(target:Object = null)
Конструктор. | AnimateTransitionShader | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | ||
Обеспечивает сбор текущих значений соответствующих свойств целевых объектов эффекта и сохраняет их как конечные значения. | Effect | ||
Обеспечивает сбор текущих значений соответствующих свойств дополнительного набора целевых объектов. Flex использует эту функцию при воспроизведении эффекта изменения данных.
| Effect | ||
Обеспечивает сбор текущих значений соответствующих свойств для целевых объектов эффекта. | Effect | ||
Создает отдельный экземпляр эффекта и инициализирует его. | Effect | ||
Принимает массив целевых объектов и вызывает метод createInstance() для каждой цели. | Effect | ||
Удаляет прослушиватели событий из экземпляра и удаляет экземпляр из списка экземпляров. | Effect | ||
Посылает событие в поток событий. | EventDispatcher | ||
Прерывает эффект, воспроизводящийся в настоящее время, и осуществляет немедленный переход в конец эффекта. | Effect | ||
Возвращает массив строк, где каждая строка представляет собой имя свойства, которое было изменено данным эффектом. | Effect | ||
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Приостанавливает эффект до вызова метода resume(). | Effect | ||
Начинает воспроизведение эффекта | Effect | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | ||
Продолжает воспроизведение эффекта после установки паузы путем вызова метода pause(). | Effect | ||
Если эффект воспроизводится в настоящее время, воспроизводит эффект в обратном порядке, начиная с текущей позиции эффекта. | Effect | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Останавливает эффект, оставляя целевые объекты эффекта в текущем состоянии. | Effect | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object | ||
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher |
bitmapFrom | свойство |
public var bitmapFrom:BitmapData
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 4 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Данные растрового изображения, представляющие начальное состояние эффекта. Если это свойство не установлено, то оно вычисляется автоматически при воспроизведении эффекта путем создания снимка целевого объекта или посредством использовании прозрачного растрового изображения, если объект не существует в состоянии начального представления перехода.
bitmapTo | свойство |
public var bitmapTo:BitmapData
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 4 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Растровые данные, представляющие конечное состояние эффекта. Если это свойство не установлено, то оно вычисляется автоматически при воспроизведении эффекта путем создания снимка целевого объекта или посредством использовании прозрачного растрового изображения, если объект не существует в состоянии конечного представления перехода.
shaderByteCode | свойство |
public var shaderByteCode:Object
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 4 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Байт-код для программы затенения пикселей, которую эффект использует для анимации между двумя данными растровыми изображениями. Это свойство может быть представлено либо как ByteArray, либо как класс, представляющий ByteArray (который является результатом встраивания ресурса).
Программа затенения пикселей может иметь произвольные функциональные возможности и входные данные, но она должна иметь как минимум три входных значения image4
. Первое значение может быть названо как угодно и не используется программой затенения пикселей, так как существует только для удовлетворения требований Flash по назначению фильтрованного объекта первому значению. Следует отметить, что значения, которые не используются в программе затенения пикселей, можно оптимизировать таким образом, что код будет ссылаться на эти значения только один раз.
Должны быть, по крайней мере, два других входных растровых изображения с именами from
и to
, которые представляют предыдущее и последующее растровое изображение. Наконец, следует определить один параметр float
с именем progress
, который содержит значение времени, затраченного на эффект.
Можно указать два дополнительных параметра width
и height
. Если они существуют, то они автоматически задают ширину и высоту целевого объекта эффекта.
Дополнительную информацию о программе затенения пикселей для Flash см. в документации Pixel Bender Toolkit. Также можно ознакомиться с исходным кодом файла CrossFade.pbk в папке frameworks\projects\flex4\src\spark\effects исходного кода Flex.
shaderProperties | свойство |
public var shaderProperties:Object
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 4 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Схема пары «имя/значение» параметра передается в программу затенения пикселей до воспроизведения. Например, для установки параметра с именем direction
для затенения в pbj-файле Pixel Bender в Wipe.pbj, вызывающий код может выглядеть следующим образом:
[Embed(source="Wipe.pbj", mimeType="application/octet-stream")] private var WipeCodeClass:Class; var shaderEffect = new AnimateTransitionShader(); shaderEffect.shaderByteCode = WipeCodeClass; shaderEffect.shaderProperties = {direction : 1};
AnimateTransitionShader | () | Конструктор |
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"> <s:states> <s:State name="default"/> <s:State name="flipped"/> </s:states> <s:transitions> <s:Transition id="t1"> <s:AnimateTransitionShader target="{holder}" duration="1000" shaderByteCode="@Embed(source='assets/twist.pbj', mimeType='application/octet-stream')"/> </s:Transition> </s:transitions> <s:Panel title="AnimateTransitionShader Example" width="75%" height="75%" horizontalCenter="0" verticalCenter="0"> <s:HGroup width="100%" height="100%" top="5" left="5" right="5"> <s:Group id="holder"> <s:BitmapImage source="@Embed('assets/back2.png')" visible="true" visible.flipped="false"/> <s:BitmapImage source="@Embed('assets/c2.png')" visible="false" visible.flipped="true"/> </s:Group> <!-- Directions --> <s:VGroup id="detailsBox" width="50%" left="0"> <s:Label width="99%" color="blue" text="AnimateShaderTransition animates a shader between two images. Click the 'Animate Shader' button to see the effect."/> </s:VGroup> </s:HGroup> <s:Rect left="0" right="0" bottom="0" height="30"> <s:fill> <s:LinearGradient rotation="90"> <s:GradientEntry color="0xE2E2E2" /> <s:GradientEntry color="0xD9D9D9" /> </s:LinearGradient> </s:fill> </s:Rect> <s:Button id="playButton" left="5" bottom="5" label="Animate Shader" click="currentState = (currentState == 'flipped') ? 'default' : 'flipped';"/> </s:Panel> </s:Application>
Tue Jun 12 2018, 11:34 AM Z