Apache Flex 4.16.1 API Reference | All Packages | All Classes | Index | Frames No Frames |
AnimateTransitionShader

Package | spark.effects
Class | public class AnimateTransitionShader
Inheritance | AnimateTransitionShader Animate Effect flash.events.EventDispatcher
Subclasses | CrossFade, Wipe

Language Version : | ActionScript 3.0

Product Version : | Flex 4

Runtime Versions : | Flash Player 10, AIR 1.5

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 Syntax Show MXML Syntax
Hide MXML Syntax

The `<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 Property `motionPaths`

View the examples

See also

flash.display.BitmapData
spark.effects.supportClasses.AnimateTransitionShaderInstance
spark.primitives.supportClasses.GraphicElement

Public Properties
Hide Inherited Public Properties
Show Inherited Public Properties

| 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
|  | customFilter : 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 : 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
|  | 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

Protected Properties
Hide Inherited Protected Properties
Show Inherited Protected Properties

| Property | Defined By
--- | --- | ---
|  | applyTransitionEndProperties : Boolean This flag controls whether the effect, when run in a transition, automatically applies the property values according to the end state, as opposed to leaving values as set by the effect itself. | Effect
|  | endValuesCaptured : Boolean = false A flag containing true if the end values of an effect have already been determined, or false if they should be acquired from the current properties of the effect targets when the effect runs. | Effect

Public Methods
Hide Inherited Public Methods
Show Inherited Public Methods

| Method | Defined By
--- | --- | ---
|  | AnimateTransitionShader(target:Object = null) Constructor. | AnimateTransitionShader
|  | captureEndValues():void Captures the current values of the relevant properties on the effect's targets and saves them as end values. | Effect
|  | captureMoreStartValues(targets:Array):void 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
|  | captureStartValues():void Captures the current values of the relevant properties on the effect's targets. | Effect
|  | createInstance(target:Object = null):IEffectInstance Creates a single effect instance and initializes it. | Effect
|  | createInstances(targets:Array = null):Array Takes an Array of target objects and invokes the createInstance() method on each target. | Effect
|  | deleteInstance(instance:IEffectInstance):void Removes event listeners from an instance and removes it from the list of instances. | Effect
|  | end(effectInstance:IEffectInstance = null):void Interrupts an effect that is currently playing, and jumps immediately to the end of the effect. | Effect
|  | getAffectedProperties():Array Returns an Array of Strings, where each String is the name of a property changed by this effect. | Effect
|  | pause():void Pauses the effect until you call the resume() method. | Effect
|  | play(targets:Array = null, playReversedFromEnd:Boolean = false):Array Begins playing the effect. | Effect
|  | resume():void Resumes the effect after it has been paused by a call to the pause() method. | Effect
|  | reverse():void Plays the effect in reverse, if the effect is currently playing, starting from the current position of the effect. | Effect
|  | stop():void Stops the effect, leaving the effect targets in their current state. | Effect

Protected Methods
Show Inherited Protected Methods
Show Inherited Protected Methods

| Method | Defined By
--- | --- | ---
|  | applyValueToTarget(target:Object, property:String, value:*, props:Object):void Used internally by the Effect infrastructure. | Effect
|  | effectEndHandler(event:EffectEvent):void Called when an effect instance has finished playing. | Effect
|  | effectStartHandler(event:EffectEvent):void This method is called when the effect instance starts playing. | Effect
|  | effectStopHandler(event:EffectEvent):void Called when an effect instance has stopped by a call to the stop() method. | Effect
|  | filterInstance(propChanges:Array, target:Object):Boolean Determines the logic for filtering out an effect instance. | Effect
|  | getValueFromTarget(target:Object, property:String):* Called by the captureStartValues() method to get the value of a property from the target. | Effect
|  | initInstance(instance:IEffectInstance):void Copies properties of the effect to the effect instance. | Effect

Events
Hide Inherited Events
Show Inherited Events

| Event | Summary | Defined By
--- | --- | --- | ---
|  | effectEnd | Dispatched when one of the effect's instances finishes playing, either when the instance finishes playing or when the effect is interrupted by a call to the end() method. | Effect
|  | effectRepeat | Dispatched when the effect begins a new repetition, for any effect that is repeated more than once. | Animate
|  | effectStart | Dispatched when the effect starts playing. | Effect
|  | effectStop | Dispatched when the effect has been stopped, which only occurs when the effect is interrupted by a call to the stop() method. | Effect
|  | effectUpdate | Dispatched every time the effect updates the target. | Animate

Property Detail

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};

Constructor Detail

AnimateTransitionShader | () | Constructor

`public function AnimateTransitionShader(target:Object = null)`

Language Version : | ActionScript 3.0

Product Version : | Flex 4

Runtime Versions : | Flash Player 10, AIR 1.5

Constructor.

Parameters

| `target:Object` (default = `null`)`` — The Object to animate with this effect.

Examples
AnimateTransitionShaderExample.mxml

    <?xml version="1.0" encoding="utf-8"?>
    <!--

      Licensed to the Apache Software Foundation (ASF) under one or more
      contributor license agreements.  See the NOTICE file distributed with
      this work for additional information regarding copyright ownership.
      The ASF licenses this file to You under the Apache License, Version 2.0
      (the "License"); you may not use this file except in compliance with
      the License.  You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.

    -->
    <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>

Wed Nov 15 2017, 09:50 AM +01:00