【问题标题】:How slide a control like in iOS in Firemonkey?如何在 Firemonkey 中滑动 iOS 中的控件?
【发布时间】:2012-03-02 13:40:34
【问题描述】:

我在表单中有一个控件。当事件发生时,它会在其顶部显示另一个控件,然后它会消失并显示第一个控件。

我希望有一个流畅的“滑入/滑出”动画,就像 iOS 中常见的那样,而不是出现/消失。

我看到firemonkey有一些动画组件,但不知道如何使用它们。

【问题讨论】:

标签: delphi delphi-xe2 firemonkey


【解决方案1】:

绝对!

http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Image_Effects

尽管名称如此,但这些效果也适用于控件,而不仅仅是位图。 还可以查看提供的示例项目(shadereffects)

【讨论】:

    【解决方案2】:

    查看 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 用于样式中的动画。

    【讨论】:

    • 仅供路人使用较新的 Delphi 版本:不推荐使用 TFmxObject.Animators,您应该改用 FMX.Ani.TAnimator.Animation 方法。为此,只需将 FMX.Ani 添加到 uses 子句并调用 TAnimator.AnimateFloatWait(Edit1, 'Opacity, 0, 1); 以实现上述解决方案中的最后一行。
    【解决方案3】:

    是的,使用动画功能。

    我已经构建了类似的东西,为 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      相关资源
      最近更新 更多