Как реализовать бесшовную анимацию?C#

Место общения программистов C#
Anonymous
Как реализовать бесшовную анимацию?

Сообщение Anonymous »

Вот над чем я работаю:
Изображение

У меня есть один ряд меток в HorizontalStackLayout.
Моя цель — использовать HorizontalStackLayout.TranslationX для создания плавного цикла прокручиваю метки, но не могу сделать это правильно.
Анимация движется прерывисто и не плавно, и я не знаю, как это исправить.
Это мой код:
private async void ContentView_Loaded(object sender, EventArgs e)
{
await Task.Delay(500);
tempWidth = this.Width;
Dispatcher.StartTimer(TimeSpan.FromMilliseconds(16), () => {
TickStrip();
return true;
});
}

float currentPosition = 0, labelSpeed = 1.5f, LabelWidth = 52, tempWidth;

private void TickStrip()
{
if (currentPosition >= 0)
{
var item = horizontalStackLayout.Children.Last();
horizontalStackLayout.Children.RemoveAt(horizontalStackLayout.Children.Count - 1);
horizontalStackLayout.Children.Insert(0, item);
// Apply translation to create a continuous scrolling effect
currentPosition = (float)-(LabelWidth);
}
else
{
currentPosition += labelSpeed;
}
horizontalStackLayout.TranslationX = currentPosition;
}

Вот как я создал эти ярлыки:
private async void AddOneRowLabels()
{
// Assuming 44 labels fit across the screen at once
double labelCount = tempWidth / 52;

for (int i = 0; i < labelCount; i++)
{
var label = new Label();
label.Text = (i + 1).ToString();
horizontalStackLayout.Children.Add(label);
}

horizontalStackLayout.TranslationX = currentPosition = (float)-tempWidth;
}

У меня есть такой стиль:







Вернуться в «C#»