【发布时间】:2012-03-02 13:40:34
【问题描述】:
我在表单中有一个控件。当事件发生时,它会在其顶部显示另一个控件,然后它会消失并显示第一个控件。
我希望有一个流畅的“滑入/滑出”动画,就像 iOS 中常见的那样,而不是出现/消失。
我看到firemonkey有一些动画组件,但不知道如何使用它们。
【问题讨论】:
标签: delphi delphi-xe2 firemonkey
我在表单中有一个控件。当事件发生时,它会在其顶部显示另一个控件,然后它会消失并显示第一个控件。
我希望有一个流畅的“滑入/滑出”动画,就像 iOS 中常见的那样,而不是出现/消失。
我看到firemonkey有一些动画组件,但不知道如何使用它们。
【问题讨论】:
标签: delphi delphi-xe2 firemonkey
绝对!
http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Image_Effects
尽管名称如此,但这些效果也适用于控件,而不仅仅是位图。 还可以查看提供的示例项目(shadereffects)
【讨论】:
查看 TFMXObject.AnimateXXX 函数:http://docwiki.embarcadero.com/Libraries/en/FMX.Types.TFmxObject_Functions(TFMXObject 是所有 FireMonkey 控件的父级,因此您可以将这些函数用于任何控件)。
一些使用 AnimateFloat 的示例:
Panel1.AnimateFloat('Left', -Panel1.Width);
ListBox1.AnimatFloat('Height', 0, 0.5, TAnimationType.atOut, TInterpolationType.itBounce);
Edit1.AnimatFloat('Opacity', 0, 1);
AnimateFloat 动画任何浮点属性。第一个参数是属性名称(作为字符串),第二个是结束值,接下来是时间段(以秒为单位),动画的方向(atIn,AtOut),最后是要使用的算法 - 请参阅http://docwiki.embarcadero.com/Libraries/en/FMX.Types.TInterpolationType 了解所有选项。
您还获得了: AnimateColor(动画颜色属性); AnimateFloatDelay(在给定延迟后开始动画); AnimateFloatWait(等到动画完成 - 用于链接动画)。
另外,StartAnimation 和 StopAnimation 用于样式中的动画。
【讨论】:
TAnimator.AnimateFloatWait(Edit1, 'Opacity, 0, 1); 以实现上述解决方案中的最后一行。
是的,使用动画功能。
我已经构建了类似的东西,为 TPanel 设置动画。我从屏幕外的 Position.X 属性开始,并使用类似这样的方式将面板动画化到视图中,其中 Self 是表单:
Panel1.Align := TAlignLayout.alNone;
Panel1.Position.X := Self.Width + 10;
Panel1.Position.Y := 0;
Panel1.Width := Self.Width;
Panel1.Height := Self.Height;
Panel1.AnimateFloatWait('Position.X', 0, 0.3);
在表单的 OnResize 事件中:
Panel1.Align := TAlignLayout.alClient;
【讨论】: