UWP Storyboard неправильно выполняет анимацию - PullRequest
1 голос
/ 21 марта 2019

У меня есть маленькая кнопка, которая должна регулироваться по вертикали и горизонтали. Я хотел бы использовать раскадровку и манипулировать X и Y при преобразовании.

И я хотел бы сделать это за кодом.

Кнопка перемещается в правильное положение, но анимация не активна.

private void AnimatePlayerMovement(Player player)
{
    //This will hold hour animation
    Piece.RenderTransform = new CompositeTransform();

    //New storyboard
    Storyboard storyboard = new Storyboard();

    //New DoubleAnimation - Y
    DoubleAnimation translateYAnimation = new DoubleAnimation();
    translateYAnimation.From = this.Path[player.from, 1];
    translateYAnimation.To = this.Path[player.to, 1];

    translateYAnimation.EasingFunction = new ExponentialEase();
    translateYAnimation.EasingFunction.EasingMode = EasingMode.EaseOut;

    translateYAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(500));

    Storyboard.SetTarget(translateYAnimation, Piece);
    Storyboard.SetTargetProperty(translateYAnimation, 
           "(UIElement.RenderTransform).(CompositeTransform.TranslateY)");

    storyboard.Children.Add(translateYAnimation);

    //New DoubleAnimation - X 
    DoubleAnimation translateXAnimation = new DoubleAnimation();
    translateXAnimation.From = this.Path[player.from, 0];
    translateXAnimation.To = this.Path[player.to, 0];
    translateXAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(500));

    Storyboard.SetTarget(translateXAnimation, Piece);
    Storyboard.SetTargetProperty(translateXAnimation,
          "(UIElement.RenderTransform).(CompositeTransform.TranslateX)");

    storyboard.Children.Add(translateXAnimation);

    storyboard.Begin();

}

и кнопка в xaml

<Button x:Name="Piece" Height="50" Width="50" HorizontalAlignment="Left" 
        Margin="115,400,0,0" VerticalAlignment="Top" Click="Button_Click" 
        RenderTransformOrigin="0.5,0.5">
    <Button.Template>
        <ControlTemplate>
            <Image Source="Assets/piece.png"/>
        </ControlTemplate>
    </Button.Template>
</Button>

1 Ответ

1 голос
/ 21 марта 2019

Я проверил ваш код, и анимация работает правильно.Рабочее репо можно найти на GitHub .Поскольку код является почти 1: 1 копией вашего образца, , за исключением , я жестко закодировал значения свойств From и To анимаций.Таким образом, я думаю, что проблема, которую вы видите, состоит в том, что значения this.Path[player.from, 0] и this.Path[player.to, 0] одинаковы (или очень похожи).Таким образом, кнопка переходит в местоположение this.Path[player.from, 0] и остается там, не двигаясь дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...