패키지 | 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:17 PM Z