我在表单中有一个控件。当事件发生时,它会在其上显示另一个控件,然后它会消失并显示第一个控件。
我希望有一个像iOS中常见的平滑“滑入/滑出”动画,而不是出现/消失。
我看到firemonkey有一些动画组件,但不知道如何使用它们。
答案 0 :(得分:5)
绝对!
http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Image_Effects
尽管有名称,这些效果也适用于控件,而不仅仅是位图。 另请查看提供的示例项目(shadereffects)
答案 1 :(得分:4)
查看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(等到动画结束 - 对链接动画很有用)。
plus,StartAnimation和StopAnimation用于样式中的动画。
答案 2 :(得分: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;