パッケージ | spark.effects |
クラス | public class AnimateTransitionShader |
継承 | AnimateTransitionShader Animate Effect EventDispatcher Object |
サブクラス | CrossFade, Wipe |
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
AnimateTransitionShader エフェクトは、AIR モバイルアプリケーションではサポートされていない Pixel Bender を使用します。 |
AnimateTransitionShader エフェクトは、開始ステートを表すビットマップ(
bitmapFrom
)と終了ステートを表す別のビットマップ(bitmapTo
)という、2 つのビットマップの間でトランジションをアニメーション化します。
アニメーション化を行う際には、2 つのビットマップを入力として使用し、shader
プロパティによって指定されたピクセルシェーダープログラムを実行します。ビットマップは、flash.display.BitmapData クラスのインスタンスによって表されます。Adobe Pixel Bender Toolkit を使用すると、独自のピクセルシェーダープログラムを作成できます。
いずれかのビットマップが提供されなかった場合、トランジションでのターゲットの適切なステートから、またはトランジションでエフェクトが実行されていないのであれば直接ターゲットから、その値が動的に決定されます。トランジションでエフェクトが実行されて、そのステート変更中にターゲットオブジェクトが消えるか出現する場合、そのオブジェクトが存在していないときのステートを表すために、完全に透明なビットマップが使用されます。
このエフェクトは、UIComponent または GraphicElement のいずれかであるターゲットに対してのみ実行できます。これは、オブジェクトのビットマップをキャプチャする際に、これらのクラスにのみ存在する、オブジェクトに関する情報が必要であるためです。
エフェクトはビットマップに基づいており、基になるピクセルシェーダープログラムは両方のビットマップが同じサイズであることを前提としているため、エフェクトは両方のビットマップが同じサイズである場合にのみ正しく機能します。したがって、ターゲットオブジェクトのサイズまたは方向が変更されて境界ボックスのサイズが変わると、エフェクトが正しく再生されない可能性があります。
このエフェクトとそのサブクラスは、Flex にある他のエフェクトとは異なり、単独で機能することが前提となっているため、他のエフェクトと同時に実行されると、意図した結果にならない可能性があります。この制約があるのは、前と後の両方のビットマップがエフェクトの開始前にキャプチャされるためです。したがって、これらのビットマップが計算された後に、ターゲットオブジェクトに対して、別のエフェクトによるターゲットのプロパティの変更といった何らかの処理が行われた場合、事前に計算されたビットマップではそれらの変更が反映されず、結果が期待どおりのものにならない可能性があります。これらのビットマップに基づくエフェクトを正しく再生するには、対象となるターゲットオブジェクトにおいてエフェクトを単独で再生する必要があります。
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
このエフェクトの開始ステートを表すビットマップデータです。 | 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
2 つのビットマップ間をアニメーション化するためにエフェクトが使用する、ピクセルシェーダープログラムのバイトコードです。 | AnimateTransitionShader | ||
shaderProperties : Object
再生の前にピクセルシェーダープログラムに渡される、パラメーターの名前と値のペアを表すマップです。 | AnimateTransitionShader | ||
startDelay : int = 0
エフェクトを開始する前の待機時間を表します(ミリ秒単位)。 | Effect | ||
target : Object
このエフェクトが適用されるオブジェクトを表します。 | Effect | ||
targets : Array
エフェクトのターゲットであるオブジェクトの配列を表します。 | Effect | ||
triggerEvent : Event
エフェクトがトリガーされたときに EffectManager によってこの Effect に渡される Event オブジェクトです。EffectManager によってエフェクトが再生されていない場合は null です。 | 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 | ||
1 つのエフェクトインスタンスを作成し、それを初期化します。 | 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 |
2 つのビットマップ間をアニメーション化するためにエフェクトが使用する、ピクセルシェーダープログラムのバイトコードです。このプロパティは、ByteArray、または ByteArray を表す Class(リソースを埋め込んだときの結果に相当)として表すことができます。
ピクセルシェーダープログラムでは任意の機能と入力を使用できますが、少なくとも 3 つの image4
の入力が必要です。最初の入力は、ピクセルシェーダープログラムのコードでは使用しないようにする必要があります。これは、フィルター処理されたオブジェクトを最初の入力に割り当てるという、Flash の要件を満たすためにのみ存在します。この入力には、任意の名前を付けることができます。ピクセルシェーダープログラムで一切使用されていない入力は最適化されて除外される可能性があるため、作成するコードで少なくとも一度この入力を参照する必要があることに注意してください。
このほか、前と後のビットマップイメージを表す from
と to
という、少なくとも 2 つの入力ビットマップを指定する必要があります。最後に、エフェクトの経過割合を含む、progress
という名前の float
パラメーターを 1 つ定義する必要があります。
オプションパラメーターとして、width
と height
の 2 つを指定できます。これらが存在する場合、エフェクトターゲットの幅と高さが自動的に設定されます。
Flash 用のピクセルシェーダープログラムの記述について詳しくは、Pixel Bender Toolkit のドキュメントを参照してください。また、Flex ソースコードの frameworks¥projects¥flex4¥src¥spark¥effects ディレクトリで、CrossFade.pbk ファイルのソースコードを確認することもできます。
shaderProperties | プロパティ |
public var shaderProperties:Object
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
再生の前にピクセルシェーダープログラムに渡される、パラメーターの名前と値のペアを表すマップです。例えば、Wipe.pbj においてシェーダーの direction
という名前のパラメーターを Pixel Bender の 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, 10:34 AM Z