套件 | spark.effects |
類別 | public class AnimateTransitionShader |
繼承 | AnimateTransitionShader Animate Effect EventDispatcher Object |
子類別 | CrossFade, Wipe |
語言版本: | ActionScript 3.0 |
產品版本: | Flex 4 |
執行階段版本: | 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 語法隱藏 MXML 語法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" />
預設 MXML 屬性motionPaths
相關 API 元素
spark.effects.supportClasses.AnimateTransitionShaderInstance
spark.primitives.supportClasses.GraphicElement
屬性 | 定義自 | ||
---|---|---|---|
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 [唯讀]
The name of the effect class, such as "Fade". | Effect | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | 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 [唯讀]
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 |
方法 | 定義自 | ||
---|---|---|---|
AnimateTransitionShader(target:Object = null)
Constructor. | AnimateTransitionShader | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | 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 | ||
會將事件傳送到事件流程。 | 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 | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
Pauses the effect until you call the resume() method. | Effect | ||
Begins playing the effect. | Effect | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | 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 | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
Stops the effect, leaving the effect targets in their current state. | Effect | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
bitmapFrom | 屬性 |
public var bitmapFrom:BitmapData
語言版本: | ActionScript 3.0 |
產品版本: | Flex 4 |
執行階段版本: | 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 | 屬性 |
public var bitmapTo:BitmapData
語言版本: | ActionScript 3.0 |
產品版本: | Flex 4 |
執行階段版本: | 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 | 屬性 |
public var shaderByteCode:Object
語言版本: | ActionScript 3.0 |
產品版本: | Flex 4 |
執行階段版本: | 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 | 屬性 |
public var shaderProperties:Object
語言版本: | ActionScript 3.0 |
產品版本: | Flex 4 |
執行階段版本: | 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 | () | 建構函式 |
<?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, 03:47 PM Z