Delphi에서 TPathAnimation을 사용해 보았습니다.
15024 단어 FireMonkey델파이animationFMX
애니메이션에 대해서는, 이전 「프로퍼티치에 의한 애니메이션의 차이를 조사해 보았다」 에서, 프로퍼티의 값에 의해 시점으로부터 종점까지의 움직임이 다른지를 소개했습니다
대부분의 애니메이션 컴포넌트는 한 방향으로 값을 변경하지만 일부는 일련의 값을 따라 변경할 수 있다는 편리한 특성을 가지고 있습니다.
그 중 하나 인 TPathAnimation을 사용해 보았습니다.
샘플 애플리케이션
이런 샘플을 만들었습니다
샘플 설계 화면 및 코드
설계 화면은 이쪽
설계시의 포인트는, 다음의 2개입니다
코드로 기술하고 있는 FloatAnimation 의 properties 는, 객체 인스펙터상에서 설정할 수 있습니다만, 이 샘플에서는 비교를 위해서 와자라고 기술하고 있습니다
unit Unit3;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Objects, FMX.Layouts, FMX.Controls.Presentation, FMX.Ani;
type
TForm3 = class(TForm)
Button1: TButton;
Layout1: TLayout;
Layout2: TLayout;
Button2: TButton;
Rectangle1: TRectangle;
Panel1: TPanel;
FloatAnimation1: TFloatAnimation;
PathAnimation1: TPathAnimation;
Button3: TButton;
FloatAnimation2: TFloatAnimation;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ private 宣言 }
mCnt: Integer;
public
{ public 宣言 }
end;
var
Form3: TForm3;
implementation
{$R *.fmx}
procedure TForm3.Button1Click(Sender: TObject);
begin
// 1 Down ボタン動作
if mCnt > 4 then Exit; // これ以上は Down できない
mCnt := mCnt + 1;
FloatAnimation2.Stop; // アニメーションの終了
FloatAnimation2.Duration := 2;
FloatAnimation2.StartValue := Rectangle1.Position.Y + 0; // 始点
FloatAnimation2.StopValue := Rectangle1.Position.Y + 50; // 終点
FloatAnimation2.Start; // アニメーションの開始
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
// New One ボタン動作
FloatAnimation1.Stop; // アニメーションの終了
FloatAnimation1.Duration := 1;
FloatAnimation1.StartValue := -250; // 始点 (画面の外)
FloatAnimation1.StopValue := 150; // 終点 (最初のバーの位置)
FloatAnimation1.Start; // アニメーションの開始
mCnt := 0;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
//1 Down Bound ボタン動作
if mCnt > 4 then Exit; // これ以上は Down できない
mCnt := mCnt + 1;
PathAnimation1.StopAtCurrent; // アニメーションの終了
PathAnimation1.Start; // アニメーションの開始
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
mCnt := 0; //初期化
PathAnimation1.Create(Self);
PathAnimation1.Path.MoveTo(PointF(0,50)); // 移動する範囲を指定
PathAnimation1.Path.LineTo(PointF(0,10)); // 途中座標の指定
PathAnimation1.Path.LineTo(PointF(0,50)); // 途中座標の指定
PathAnimation1.Path.LineTo(PointF(0,20)); // 途中座標の指定
PathAnimation1.Path.LineTo(PointF(0,50)); // 途中座標の指定
PathAnimation1.Path.LineTo(PointF(0,30)); // 途中座標の指定
PathAnimation1.Path.ClosePath; // 座標の指定終了
PathAnimation1.Duration := 2;
end;
end.
해설
FloatAnimation 의 경우는 한쪽 방향으로의 값의 변화 밖에 할 수 없기 때문에, 만약, 똑같이 바운드시키는 것 같은 동작을 행한다면
라고 하는 코드를 써야 한다(또는 상기의 설정을 한 FloatAnimation 를 준비해, 차례로 동작시킨다)
PathAnimation의 경우 MoveTo에서 첫 번째 이동 범위를 지정하고 LineTo에서 해당 범위 내에서 더 이동할 좌표를 지정할 수 있습니다.
이 샘플의 경우
특수 효과적인 움직임을 만드는 데 사용할 수 있습니다.
Reference
이 문제에 관하여(Delphi에서 TPathAnimation을 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/CYonezawa/items/fcf4ed4a2a42f4a1bf4c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)