Browse Source

Merge pull request #3836 from AvaloniaUI/fix-keytime-bug-3653

Fix KeyFrame's KeyTime conversion to Cue
pull/3842/head
Steven Kirk 7 years ago
committed by GitHub
parent
commit
015013dd52
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      src/Avalonia.Animation/Animation.cs
  2. 49
      tests/Avalonia.Animation.UnitTests/AnimationIterationTests.cs

2
src/Avalonia.Animation/Animation.cs

@ -251,7 +251,7 @@ namespace Avalonia.Animation
if (keyframe.TimingMode == KeyFrameTimingMode.TimeSpan) if (keyframe.TimingMode == KeyFrameTimingMode.TimeSpan)
{ {
cue = new Cue(keyframe.KeyTime.Ticks / Duration.Ticks); cue = new Cue(keyframe.KeyTime.TotalSeconds / Duration.TotalSeconds);
} }
var newKF = new AnimatorKeyFrame(handler, cue); var newKF = new AnimatorKeyFrame(handler, cue);

49
tests/Avalonia.Animation.UnitTests/AnimationIterationTests.cs

@ -14,6 +14,55 @@ namespace Avalonia.Animation.UnitTests
{ {
public class AnimationIterationTests public class AnimationIterationTests
{ {
[Fact]
public void Check_KeyTime_Correctly_Converted_To_Cue()
{
var keyframe1 = new KeyFrame()
{
Setters =
{
new Setter(Border.WidthProperty, 100d),
},
KeyTime = TimeSpan.FromSeconds(0.5)
};
var keyframe2 = new KeyFrame()
{
Setters =
{
new Setter(Border.WidthProperty, 0d),
},
KeyTime = TimeSpan.FromSeconds(0)
};
var animation = new Animation()
{
Duration = TimeSpan.FromSeconds(1),
Children =
{
keyframe2,
keyframe1
}
};
var border = new Border()
{
Height = 100d,
Width = 100d
};
var clock = new TestClock();
var animationRun = animation.RunAsync(border, clock);
clock.Step(TimeSpan.Zero);
Assert.Equal(border.Width, 0d);
clock.Step(TimeSpan.FromSeconds(1));
Assert.Equal(border.Width, 100d);
}
[Fact] [Fact]
public void Check_Initial_Inter_and_Trailing_Delay_Values() public void Check_Initial_Inter_and_Trailing_Delay_Values()
{ {

Loading…
Cancel
Save