动画为 运行 时阻止事件

Block event while animations is running

我正在开发一款植入了滑动功能的应用程序。

当用户滑动一个框时,它会触发一个事件,在该事件中,框会动画化以滑动一侧。我在哪里创建如下所示的动画

boxview.Swiped += (s, e) =>
{
    if (e.Direction == MR.Gestures.Direction.Right)
    {
        boxview.TranslateTo(-600, 0, 500, null);
    }
}

所以我想做的是忽略这个,如果它在完成动画所需的 500 毫秒时间跨度内再次调用。

一直在考虑只参加活动 (e) 并取消它。但我仍然需要一种方式来说明它应该只在时间跨度内完成。并且没有运气让它工作。

无论如何感谢您的任何意见,感谢您的宝贵时间。

您可以启动计时器并在下一个事件时检查它。

由于我不熟悉 Xamarin 本身,所以这个答案是理论上的。 TranslateTo 似乎是可以等待的,所以你可以使用你正在滑动的标志,等待转换为并在之后重置标志

bool swiping;
boxview.Swiped += async (s, e) =>
{
    if (e.Direction == MR.Gestures.Direction.Right && !swiping)
    {
        swiping = true;
        await boxview.TranslateTo(-600, 0, 500, null);
        swiping =false;
    }
}