1

在另一个问题上给我的解决方案是编写自定义缓动函数并将其添加到我的 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;
    }
}

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

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

no suitable method found to override 

和可冻结:

Freezable does not exist in the namesape

我已经阅读了微软和其他网站关于缓动函数的信息,但没有一个完整的例子展示了如何在 UWP C# 代码中实现这一点。

任何帮助,将不胜感激。

4

1 回答 1

1

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

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

于 2019-06-03T22:46:16.123 回答