AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] パス移動アニメーション 2013/11/13
 
前回は [Animations]内の数値キーアニメーション(FloatKeyAnimation)について見てみました。次は同じく [Animations]内のパス移動アニメーション(PathAnimation)について見ていきます。
 
[Animations]内
FMX
 
ヘルプより。
指定されたパス上をビジュアル オブジェクトを移動させるために使用します。
 
TPathAnimation インスタンスを作成し、その Parent プロパティをフォーム上のコントロールに設定します。 アニメーションの座標を、Path プロパティを使用して設定します。 TPathAnimation では、Rotate プロパティを True に設定することにより、移動中のオブジェクトの回転が可能になります。
 

 

 
OnFinish
アニメーションが停止された後に呼び出されるイベント ハンドラです。
 
Start を呼び出すプロシージャが完了してアニメーションが開始された後、Duration の秒数間、継続されます。アニメーションが完了した後に必要な処理を、OnFinish イベント ハンドラ内に配置します。OnFinish は、Loop プロパティが True の場合、Stop メソッドが呼び出されない限り、呼び出されません。
 
OnFinish は、アニメーションの完了を監視し応答するには、適切な場所です。
OnProcess
アニメーションの処理中に呼び出されるイベント ハンドラ。
 
OnProcess は、アニメーションによって制御される値が変更されるたびに、繰り返し呼び出されます。アニメーションが親オブジェクトの見た目を変更させた場合、親オブジェクトは自動的に再描画されます。OnProcess 内での処理が、親の境界ボックスの外側の描画を発生させた場合、そのフォームの Invalidate メソッドを呼び出します。
 
OnProcess は、アニメーション内での変更を監視し応答するには、適切な場所です。OnProcess を、親の OnPaint イベントの代わりに使用します。
 
Sender は、TAnimation およびその親オブジェクトが属するフォームです。
AnimationType
このアニメーションの補間が、アニメーション プロパティに対してどのように適応されるかを設定します。
atIn:開始値から開始
atOut:終了値から開始され、開始値に向けて逆方向に
atInOut:開始値および終了値の両方から開始され、中央の点で接します
AutoReverse
前にアニメーションした後、逆にアニメーションします。
Delay
アニメーションを開始するまで待機する秒数
Duration
開始値から終了値までの、アニメーションする時間(秒数)
Interpolation
アニメーションによって制御されている値が時間の経過と共にどのように変化するのかを設定します。※1
Inverse
前方の代わりに後方へとアニメーションします。
Loop
アニメーションを無制限に繰り返します。
Path
アニメーションのパスを決定する、ポイントを示します。
アニメーションのパスは、Path プロパティで指定されたポイントから派生する平滑化スプラインです。
Rotate
アニメーション時に、アニメ化オブジェクトを回転させるかどうかを示します。
Trigger
親オブジェクトのプロパティの状態であり、アニメーションを開始するために使用することができます。
TTrigger:
アニメーションの親オブジェクトの状態を示します。
TTrigger は、アニメーションの親の論理型プロパティの状態を示す文字列です。 該当するプロパティには次のものがあります。
IsMouseOver
IsFocused
IsVisible
IsDragOver
IsOpen
TTrigger に割り当てられる文字列は、上記プロパティいずれかの名前の後に "=true" または "=false" を付けたものになります。
TriggerInverse
親オブジェクトのプロパティの状態であり、アニメーションを逆方向に開始するために使用することができます。
 
※1:Interpolationの型(ヘルプより)
itLinear線形補間。このアニメーションが適用されるプロパティ値は、時間と共に一定の割合で変化します。
itQuadratic開始点と終了点の間のパスに 2 次関数が適用されます。パスの傾きは開始点で 0 であり、時間と共に常に増加します。終了点がパス上にくるよう、関数にはスカラが適用されます。
itCubic補間は y = x**3 という形式になります。パスの傾きは開始点で 0 であり、パスを進むにつれて 2 次関数の場合よりもさらに速く増加します。
itQuartic補間は y = x**4 という形式になります。パスの傾きは開始点で 0 であり、パスを進むにつれて 2 次関数の場合よりもさらに速く増加します。
itQuintic補間は y = x**5 という形式になります。 パスの傾きは開始点で 0 であり、パスを進むにつれて 2 次関数の場合よりもさらに速く増加します。
itSinusoidal補間は y = sin(x) という形式になります。 パスの傾きは開始点で 0 であり、サイン曲線の最初の変曲点(x=pi)が終了点になります。
itExponential補間は y = e**xという形式になります。 パスの傾きは開始点で 1 であり、パスを進むにつれて 2 次関数の場合よりもさらに速く増加します。
itCircularこの補間では、開始点と終了点の間のパスは円周の 4 分の 1 です。パスの傾きは開始点で 0 であり、終了点で垂直になります。
itElasticパスは幾何学的補間に合致しません。値(y 座標)は減少して開始値に向かって戻る可能性がありますが、時間(x の値)は常に正の方向に進まなければなりません。
itBackパスは幾何学的補間に合致しません。 値(y 座標)は減少して開始値に向かって戻る可能性がありますが、時間(x の値)は常に正の方向に進まなければなりません。
itBounceパスは跳ねるボールを表します。パスは、開始点と終了点を結ぶ直線から湾曲が離れていく複数の円曲線から構成されます。曲線どうしは尖った点で接続されます。
補間で指定されたパスは、TAnimation と TFloatAnimation のいくつかのプロパティの影響を受ける可能性があります。上記の説明は次の条件でのものです:
・StartFromCurrent = True
・AnimationType = atIn
AnimationType を atOut に設定すると、上の説明で開始点について述べたことがすべて、終了点に適用されます。これらのアニメーション プロパティの効果については、各プロパティのドキュメントを参照してください。
 
というわけで、試してみます。
フォーム Form1 上に[Standard]のボタン(Button)を配置し、その下に(その子として)パス移動アニメーション PathAnimation1 を配置します。

 
パス移動アニメーションは、親コンポーネントの表示位置(及び角度)を変えるアニメーション処理ですので、プロパティの指定(PropertyNameプロパティの指定)はありません。
 
次に、パス移動アニメーションを自由に開始出来るように、ボタンをクリックしたらアニメーション開始することにします。
procedure TForm1.Button1Click(Sender: TObject);
begin
 PathAnimation1.Enabled := False ;
 PathAnimation1.Enabled := True ;
end;
「PathAnimation1.Stop ;
 PathAnimation1.Start ;」でも構いません。
 
コンポーネントの移動パターンを示すパス(通り道)は、最初のフォーム表示時に行うようにしておきます。
procedure TForm1.FormShow(Sender: TObject);
begin
 PathAnimation1.Path.Clear ;
 PathAnimation1.Path.MoveTo(PointF(0,0));
 PathAnimation1.Path.LineTo(PointF(100,0));
 PathAnimation1.Path.LineTo(PointF(100,50));
 PathAnimation1.Path.LineTo(PointF(0,50));
 PathAnimation1.Path.ClosePath ;
end;
 
保存・コンパイル(ビルド)・実行を行います。

ボタンをクリック








 
という具合に、ボタン Button1 の位置が、指定したパスに沿って変化していきます。
 
1回で終了しますが、何度も繰り返したい場合は、Loopプロパティを「True」にすれば良いでしょう。AutoReverseプロパティを「True」にすると、終了値→開始値のアニメーションが行われます。
 
Rotateプロパティを「True」にすると、パス移動にともないコンポーネントを回転します。進行方向は下方向のようで、下方向移動時は回転は行われません。その後、パスの角度により回転を伴います。ですので自分の思ったような回転をしてくれるのかどうかは……。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/11/12
 2013/11/13
▼2013/11/14
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.