动画为 运行 时阻止事件
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;
}
}
我正在开发一款植入了滑动功能的应用程序。
当用户滑动一个框时,它会触发一个事件,在该事件中,框会动画化以滑动一侧。我在哪里创建如下所示的动画
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;
}
}