尝试使用 Delphi FMX 为矩形边框设置动画

问题描述 投票:0回答:1

我有一个关于 Delphi 的 FMX `TRectangle 对象的问题。

我正在尝试为

TRectangle
的虚线边框设置动画,但我做不到。

我已经在表单的

OnCreate
事件中编写了这段代码:

  Rectangle1.Stroke.Kind := TBrushKind.Solid;
  Rectangle1.Stroke.Dash := TStrokeDash.Dash;
  Rectangle1.Stroke.Color := TAlphaColors.Red;
  Rectangle1.Stroke.Thickness := 2;

  // Configura l'animazione del bordo
  FloatAnimation1.Parent := Rectangle1;
  FloatAnimation1.PropertyName := 'StrokeDashOffset';
  FloatAnimation1.StartValue := 0;
  FloatAnimation1.StopValue := 20;
  FloatAnimation1.Duration := 1;
  FloatAnimation1.Loop := True;
  FloatAnimation1.AnimationType := TAnimationType.InOut;
  FloatAnimation1.Interpolation := TInterpolationType.Linear;
  FloatAnimation1.Start;

在表单上,有一个

TRectangleObject
TFloatAnimation
对象应该为矩形设置动画,但当我运行程序时,我看不到动画。

这是我第一次编写Delphi FMX应用程序,因为我通常使用VCL进行开发。

有人可以告诉我这段代码有什么问题吗?我获得了红色破折号边框,但没有动画。

delphi firemonkey
1个回答
3
投票

我认为

FloatAnimation1.PropertyName
的值不正确。
在表单上放置
TFloatAnimation
并查看
PropertyName
属性的可能性。

如果您尝试更改此属性(例如放置Stroke.Thickness),则动画可以正常运行。

我已经尝试过这段代码:

procedure TForm3.FormShow(Sender: TObject);
begin
  FloatAnimation1.Parent := Rectangle1;
  FloatAnimation1.PropertyName := 'Stroke.Thickness';
  FloatAnimation1.StartValue := 0;
  FloatAnimation1.StopValue := 5;
  FloatAnimation1.Duration := 1;
  FloatAnimation1.Loop := True;
  FloatAnimation1.AnimationType := TAnimationType.InOut;
  FloatAnimation1.Interpolation := TInterpolationType.Linear;
  FloatAnimation1.Start;
end;

这就是结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.