mx.effects
CompositeEffect クラス
直接の既知のサブクラス
mx.effects.Parallel, mx.effects.Sequence
CompositeEffect クラス
mx.effects.Effect の拡張CompositeEffect クラスは <mx:Parallel> および <mx:Sequence> の各エフェクトのスーパークラスです。Flex では、エフェクトを組み合わせる方法を 2 つサポートしています。それは、パラレル処理とシーケンス処理です。複数のエフェクトをパラレル処理で組み合わせると、これらのエフェクトが同時に再生されます。複数のエフェクトをシーケンス処理で組み合わせると、1 つのエフェクトの再生が終了してから、別のエフェクトの再生が始まります。
通常、組み合わせたエフェクトの開始は次の 5 つの手順から成るプロセスです。
- 組み合わせるエフェクトオブジェクトのインスタンスを作成します (たとえば、
myFadeEffect = new mx.effects.Fade(targetObj) とします)。 - 個々のエフェクトオブジェクトのプロパティを設定します (duration プロパティなど)。
- Parallel エフェクトオブジェクトまたは Sequence エフェクトオブジェクトのインスタンスを作成します。
たとえば、mySequenceEffect = new mx.effects.Sequence() とします。 - エフェクトオブジェクトごとに addChild() メソッドを呼び出します。
たとえば、mySequenceEffect.addChild(myFadeEffect) とします。 - 組み合わせたエフェクトの playEffect メソッドを呼び出します。
たとえば、mySequenceEffect.playEffect とします。
例を参照するにはここをクリックしてください
| addChild( childEffect:Object)
新しい子エフェクトを、この組み合わせたエフェクトに追加します。 |
| endEffect( )
現在再生中のエフェクトをすべて中断し、まだ再生を開始していないエフェクトをすべてスキップして、組み合わせたエフェクトの終わりに直ちにジャンプします。 |
CompositeEffect
CompositeEffect( targetObj)
コンストラクタです。
パラメータ
targetObj - 組み合わせたエフェクトの場合、この引数は無視されます。このパラメータは、他の種類のエフェクトとの一貫性を維持する目的で用意されています。
addChild
addChild( childEffect:Object)
新しい子エフェクトを、この組み合わせたエフェクトに追加します。シーケンス処理エフェクトでは、それぞれの子エフェクトが、追加された順序で一度に 1 つずつ再生されます。パラレル処理エフェクトでは、すべての子エフェクトが、追加された順序に関係なく同時に再生されます。
パラメータ
childEffect:Object - 組み合わせたエフェクトに追加する子エフェクトの名前を表します。
endEffect
endEffect( )
現在再生中のエフェクトをすべて中断し、まだ再生を開始していないエフェクトをすべてスキップして、組み合わせたエフェクトの終わりに直ちにジャンプします。
| CompositeEffectExample.mxml |
<?xml version="1.0" encoding="utf-8"?>
<!-- 組み合わせたエフェクトの使用方法を示す簡単な例 -->
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" backgroundColor="#FFFFFF">
<mx:Script>
<![CDATA[
import mx.effects.Move;
import mx.effects.Sequence;
import mx.effects.Parallel;
var movesequenceA:Move;
var movesequenceB:Move;
var moveparallelbutton:Move;
var sequenceAB:Sequence;
var parallelAB:Parallel;
function starteffect(ax,ay,bx,by)
{
movesequenceA= new mx.effects.Move(a);
movesequenceB= new mx.effects.Move(b);
moveparallelbutton= new mx.effects.Move(button);
sequenceAB= new mx.effects.Sequence();
parallelAB= new mx.effects.Parallel();
sequenceAB.addChild(movesequenceA);
sequenceAB.addChild(movesequenceB);
parallelAB.addChild(moveparallelbutton);
moveparallelbutton.xTo=0;
moveparallelbutton.xFrom= 245;
moveparallelbutton.yFrom=85;
moveparallelbutton.duration= 4000;
movesequenceA.xTo= ax;
movesequenceA.xBy= 200;
movesequenceA.yTo= ay;
movesequenceA.yBy= 175;
movesequenceA.duration= 2000;
movesequenceB.yFrom =175;
movesequenceB.xTo= bx;
movesequenceB.xBy= 200;
movesequenceB.yTo= by;
movesequenceB.yBy= 200;
movesequenceB.duration= 2000;
sequenceAB.playEffect();
parallelAB.playEffect();
}
]]>
</mx:Script>
<mx:Panel title="Composite Effect" >
<mx:Canvas id="canvas" width="500" height="200">
<mx:Label id="a" text="Sequence 1" height="{(canvas.height-20)/2}" width="{(canvas.width-20)/2}"
effectStart=" a.text= 'sequence 1 Running';"
effectEnd="a.text='sequence 1 ended!!!'" color="#009966"/>
<mx:Label id="b" y="175" text="Sequence 2" height="{(canvas.height-20)/2}"
width="{(canvas.width-20)/2}" effectStart=" b.text= 'sequence 2 Running';"
effectEnd="b.text='sequence 2 ended!!'" x="0" color="#00CCFF"/>
<mx:Button id="button" label="Start effect" click="starteffect(200,175,200,0)"
effectStart="button.label='parallel effect running'"
effectEnd="button.label='parallel effect ended!!'" x="245" y="85"/>
</mx:Canvas>
</mx:Panel>
</mx:Application>
|