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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] 色アニメーション(ColorKeyAnimation)2013/11/11
 
前回は [Animations]内の画像一覧アニメーション(BitmapListAnimation)について見てみました。次は同じく [Animations]内の 色アニメーション(ColorKeyAnimation)について見ていきます。
 
[Animations]内
FMX
 
ヘルプより。
オブジェクトのプロパティにアタッチし、そのプロパティの色を時間の経過と共に変更していきます。
 
TColorKeyAnimation は、TFmxObject 親オブジェクトに、次のいずれかの方法でアタッチします:
・親オブジェクトを選択し、ツール パレット で TColorKeyAnimation をダブルクリックします。 それから、アニメーションする親オブジェクトのプロパティの名前に PropertyName を設定します。
・親オブジェクトのオブジェクト インスペクタで、アニメーションするプロパティの隣にあるフイルム ストリップ アイコンをダブルクリックします。 これにより、PropertyName が割り当てられます。
・TColorKeyAnimation インスタンスを動的に作成し、親として親オブジェクトを割り当てます。 それから、PropertyName を設定します。
 

 

 
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
前方の代わりに後方へとアニメーションします。
Keys
色キーのコレクションを示します。これらの色キーは、アニメーションする(色をシフトする)指定プロパティの色を、変更するために使用されます。
Loop
アニメーションを無制限に繰り返します。
PropertyName
アニメーションするプロパティの名前。
StartFromCurrent
このプロパティのアニメーションを、現在値から開始します。
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)を配置します。

 
PropertyNameプロパティを、右端[▼]ボタンをクリックして選択出来る「Fill.Color」にします。
この親オブジェクト=フォーム Form1 の Fill.Color プロパティ、という事です。
 
フォーム Form1 の Fill.Kind プロパティ値を「bkSolid」にしておきます。
 
色アニメーション ColorKeyAnimation1 の Keysプロパティ右端[…]ボタンをクリックすると、編集画面が表示されますので、新規追加ボタンをクリックします。
Keyプロパティは「0」のまま、Valueプロポパティを水色の 「Aqua」にしてみます。
もう1つ新規追加し、
Keyプロパティを「1」にして、Valueプロポパティを橙色の 「Tomato」にしてみます。
 
次に、色アニメーションを自由に開始出来るように、ボタンをクリックしたらアニメーション開始することにします。
procedure TForm1.Button1Click(Sender: TObject);
begin
 ColorKeyAnimation1.Enabled := False ;
 ColorKeyAnimation1.Enabled := True ;
end;
「ColorKeyAnimation1.Stop ;
 ColorKeyAnimation1.Start ;」でも構いません。
 
保存・コンパイル(ビルド)・実行を行います。

ボタンをクリック






 
という具合に、水色「Aqua」から橙色「Tomato」に徐々に変化していきます。
 
1回で終了しますが、何度も繰り返したい場合は、Loopプロパティを「True」にすれば良いでしょう。AutoReverseプロパティを「True」にすると、終了値→開始値のアニメーションが行われます。
 
2色だけではなく複数色に連続して変化させていくことも出来ます。その際は、Keyプロパティ値を 0 〜 1 の範囲内で、それぞれ異なる値で 順序が 0→0.5→1 という具合に連続するように指定します。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/11/10
 2013/11/11
▼2013/11/12
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.