如何通过代码将 EasingFunction 添加到 UWP 应用

How to add an EasingFunction to an UWP app by code

在另一个问题上给我的解决方案是编写自定义缓动函数并将其添加到我的 UWP 代码中。提供的示例是这段代码:

public class StepEasingFunction : EasingFunctionBase
{
    public double NormalizedStep { get; set; }

    protected override Freezable CreateInstanceCore()
    {
        return new StepEasingFunction {NormalizedStep = NormalizedStep};
    }

    protected override double EaseInCore(double normalizedTime)
    {
        var stepIndex = Math.Round(normalizedTime / NormalizedStep);
        return NormalizedStep * stepIndex;
    }
}

我在网上搜索并尝试了不同的方法来在我的应用程序中实现此代码,但我做不到。我不知道这段代码是进入我的命名空间还是我需要创建一个外部 class。

如果我将代码放入我的命名空间中,我会收到 EaseInCore 和 CreateInstanceCore 错误:

no suitable method found to override 

在 Freezable 上:

Freezable does not exist in the namesape

我已阅读 Microsoft 和其他网站关于缓动函数的信息,但 none 显示了有关如何在 UWP C# 代码中实现此功能的完整示例。

如有任何帮助,我们将不胜感激。

您 post 编辑的 EasingFunctionBase 是 WPF (System.Windows) class。不幸的是,class 在 UWP 上不可扩展(请参阅此论坛 post:https://social.msdn.microsoft.com/Forums/en-US/81e9d88b-70c7-4ba2-92bf-7c3890b91f81/uwpeasingfunctionbase-uwp-how-to)。

在您的情况下,您可能需要在代码中使用自定义动画,或使用关键帧来模拟不同的曲线。您还可以查看 Visual Layer API,它允许您创建自定义缓动函数。