Package | spark.effects |
Class | public class AnimateTransitionShader |
Inheritance | AnimateTransitionShader Animate Effect EventDispatcher Object |
Subclasses | CrossFade, Wipe |
Language Version: | ActionScript 3.0 |
Product Version: | Flex 4 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
The AnimateTransitionShader effect uses Pixel Bender, which is not supported for AIR mobile applications. |
The AnimateTransitionShader effect animates a transition between two bitmaps, one representing the start state (
bitmapFrom
), and
the other representing the end state (bitmapTo
).
The animation is performed by running a pixel-shader program,
specified by the shader
property,
using the two bitmaps as input.
The bitmaps are represented by an instance of the flash.display.BitmapData class.
You can create your own pixel-shader program
by using Adobe Pixel Bender Toolkit.
If either bitmap is not supplied, that value is determined dynamically from either the appropriate state of the target in a transition or, if the effect is not running in a transition, from the target directly. If the effect is run in a transition and the target object either goes away or comes into existence during that state change, then a fully-transparent bitmap is used to represent that object when it does not exist.
This effect can only be run on targets that are either UIComponents or GraphicElements, since capturing the bitmap of the object requires information about the object that only exists in these classes.
Because the effect is bitmap-based, and the underlying pixel-shader program expects both bitmaps to be the same size, the effect only works correctly when both bitmaps are of the same size. This means that if the target object changes size or changes orientation leading to a different size bounding box, then the effect might not play correctly.
This effect and its subclasses differ from other effects in Flex in that they are intended to work on their own, and may not have the intended result when run in parallel with other effects. This constraint comes from the fact that both of the before and after bitmaps are captured before the start of the effect. So if something happens to the target object after these bitmaps are calculated, such as another effect changing the target's properties, then those changes are not be accounted for in the pre-calculated bitmap and the results might not be as expected. To ensure correct playing of these bitmap-based effects, they should be played alone on their target objects.
MXML SyntaxHide MXML SyntaxThe <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" />
Default MXML PropertymotionPaths
Related API Elements
spark.effects.supportClasses.AnimateTransitionShaderInstance
spark.primitives.supportClasses.GraphicElement
Property | Defined By | ||
---|---|---|---|
bitmapFrom : BitmapData
The bitmap data representing the start state of this effect. | AnimateTransitionShader | ||
bitmapTo : BitmapData
The bitmap data representing the end state of this effect. | AnimateTransitionShader | ||
className : String [read-only]
The name of the effect class, such as "Fade". | Effect | ||
constructor : Object
A reference to the class object or constructor function for a given object instance. | Object | ||
customFilter : mx.effects:EffectTargetFilter
Specifies a custom filter object, of type EffectTargetFilter,
used by the effect to determine the targets
on which to play the effect. | Effect | ||
disableLayout : Boolean
If true, the effect disables layout on its
targets' parent containers, setting the containers autoLayout
property to false, and also disables any layout constraints on the
target objects. | Animate | ||
duration : Number
Duration of the effect in milliseconds. | Effect | ||
easer : IEaser
The easing behavior for this effect. | Animate | ||
effectTargetHost : mx.effects:IEffectTargetHost
A property that lets you access the target list-based control
of a data effect. | Effect | ||
filter : String
Specifies an algorithm for filtering targets for an effect. | Effect | ||
hideFocusRing : Boolean
Determines whether the effect should hide the focus ring
when starting the effect. | Effect | ||
instanceClass : Class
An object of type Class that specifies the effect
instance class class for this effect class. | Effect | ||
interpolator : IInterpolator
The interpolator used by this effect to calculate values between
the start and end values of a property. | Animate | ||
isPlaying : Boolean [read-only]
A read-only flag which is true if any instances of the effect
are currently playing, and false if none are. | Effect | ||
motionPaths : Vector.<MotionPath>
A Vector of MotionPath objects, each of which holds the
name of a property being animated and the values that the property
takes during the animation. | Animate | ||
perElementOffset : Number
Additional delay, in milliseconds, for effect targets
after the first target of the effect. | Effect | ||
playheadTime : Number
Current time position of the effect. | Effect | ||
prototype : Object [static]
A reference to the prototype object of a class or function object. | Object | ||
relevantProperties : Array
An Array of property names to use when performing filtering. | Effect | ||
relevantStyles : Array
An Array of style names to use when performing filtering. | Effect | ||
repeatBehavior : String
The behavior of a repeating effect, which means an effect
with repeatCount equal to either 0 or > 1. | Animate | ||
repeatCount : int = 1
Number of times to repeat the effect. | Effect | ||
repeatDelay : int = 0
Amount of time, in milliseconds, to wait before repeating the effect. | Effect | ||
shaderByteCode : Object
The bytecode for the pixel-shader program that the effect uses
to animate between the two bitmaps. | AnimateTransitionShader | ||
shaderProperties : Object
A map of parameter name/value pairs passed to the pixel-shader program
before playing. | AnimateTransitionShader | ||
startDelay : int = 0
Amount of time, in milliseconds, to wait before starting the effect. | Effect | ||
target : Object
The object to which this effect is applied. | Effect | ||
targets : Array
An Array of objects that are targets for the effect. | Effect | ||
triggerEvent : Event
The Event object passed to this Effect
by the EffectManager when an effect is triggered,
or null if the effect is not being
played by the EffectManager. | Effect |
Method | Defined By | ||
---|---|---|---|
AnimateTransitionShader(target:Object = null)
Constructor. | AnimateTransitionShader | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object with an EventDispatcher object so that the listener
receives notification of an event. | EventDispatcher | ||
Captures the current values of the relevant properties
on the effect's targets and saves them as end values. | Effect | ||
Captures the current values of the relevant properties
of an additional set of targets
Flex uses this function when a data change
effect is run.
| Effect | ||
Captures the current values of the relevant properties
on the effect's targets. | Effect | ||
Creates a single effect instance and initializes it. | Effect | ||
Takes an Array of target objects and invokes the
createInstance() method on each target. | Effect | ||
Removes event listeners from an instance
and removes it from the list of instances. | Effect | ||
Dispatches an event into the event flow. | EventDispatcher | ||
Interrupts an effect that is currently playing,
and jumps immediately to the end of the effect. | Effect | ||
Returns an Array of Strings, where each String is the name
of a property changed by this effect. | Effect | ||
Checks whether the EventDispatcher object has any listeners registered for a specific type
of event. | EventDispatcher | ||
Indicates whether an object has a specified property defined. | Object | ||
Indicates whether an instance of the Object class is in the prototype chain of the object specified
as the parameter. | Object | ||
Pauses the effect until you call the resume() method. | Effect | ||
Begins playing the effect. | Effect | ||
Indicates whether the specified property exists and is enumerable. | Object | ||
Removes a listener from the EventDispatcher object. | EventDispatcher | ||
Resumes the effect after it has been paused
by a call to the pause() method. | Effect | ||
Plays the effect in reverse, if the effect is currently playing,
starting from the current position of the effect. | Effect | ||
Sets the availability of a dynamic property for loop operations. | Object | ||
Stops the effect, leaving the effect targets in their current state. | Effect | ||
Returns the string representation of this object, formatted according to locale-specific conventions. | Object | ||
Returns the string representation of the specified object. | Object | ||
Returns the primitive value of the specified object. | Object | ||
Checks whether an event listener is registered with this EventDispatcher object or any of
its ancestors for the specified event type. | EventDispatcher |
bitmapFrom | property |
public var bitmapFrom:BitmapData
Language Version: | ActionScript 3.0 |
Product Version: | Flex 4 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
The bitmap data representing the start state of this effect. If this property is not set, it is calculated automatically when the effect is played by taking a snapshot of the target object, or by using a transparent bitmap if the object does not exist in the start view state of a transition.
bitmapTo | property |
public var bitmapTo:BitmapData
Language Version: | ActionScript 3.0 |
Product Version: | Flex 4 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
The bitmap data representing the end state of this effect. If this property is not set, it is calculated automatically when the effect is played by taking a snapshot of the target object, or by using a transparent bitmap if the object does not exist in the end view state of a transition.
shaderByteCode | property |
public var shaderByteCode:Object
Language Version: | ActionScript 3.0 |
Product Version: | Flex 4 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
The bytecode for the pixel-shader program that the effect uses to animate between the two bitmaps. This property can be represented as either a ByteArray or as a Class representing a ByteArray (which is what results when you embed a resource).
The pixel-shader program can have arbitrary functionality and inputs, but
must, at a minimum, have three image4
inputs.
The first input, which can be named anything, should go
unused by your pixel-shader program code - it exists only to satisfy the
Flash requirement of assigning a filtered object to the
first input. Note that inputs that go completely unused in a
pixel-shader program might be optimized out, so your code should
at least reference this input once.
There must be at least two other input bitmaps
named from
and to
which represent the before and after bitmap images.
Finally, you must define one
float
parameter named progress
that contains the elapsed fraction of the effect.
You can specify two optional parameters, width
and height
. If they exist, they
are automatically set to the width and height of the
effect target.
See the Pixel Bender Toolkit documentation for more information on writing pixel-shader programs for Flash. You can also look at the source code for the CrossFade.pbk file in the frameworks\projects\flex4\src\spark\effects directory of the Flex source code.
shaderProperties | property |
public var shaderProperties:Object
Language Version: | ActionScript 3.0 |
Product Version: | Flex 4 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
A map of parameter name/value pairs passed to the pixel-shader program
before playing. For example,
to set a parameter named direction
in a
shader with a Pixel Bender pbj file in Wipe.pbj, the calling
code could do the following:
[Embed(source="Wipe.pbj", mimeType="application/octet-stream")] private var WipeCodeClass:Class; var shaderEffect = new AnimateTransitionShader(); shaderEffect.shaderByteCode = WipeCodeClass; shaderEffect.shaderProperties = {direction : 1};
AnimateTransitionShader | () | Constructor |
<?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>
Mon Nov 28 2011, 06:48 AM -08:00