저는 Silverlight 3에서 정말 이상한 문제에 부딪 힙니다. 제공된 DoubleAnimation 주위에 스토리 보드를 만들고 해당 애니메이션을 재생하는 확장 메서드를 정의했습니다. 저는 Silverlight에서 스토리 보드의 기본 지속 시간이 1 초임을 알고 있지만 제 애니메이션의 경우이를 변경하고 싶습니다. 그러나 다른 기간을 설정하면 할당 된 시간에 처음부터 끝까지 움직 이도록 애니메이션을 변경하는 대신 지정된 시간 동안 애니메이션이 재생 된 다음 중지됩니다. 예를 들어, 내가 0,0에서 0,10으로 이동하고 지속 시간을 .3s로 설정하면 항목은 0.3으로 이동합니다. 나는 이것이 의도적으로 설계된 것이라고 상상할 수 없다. 여기서 무슨 일이 벌어지고 있는거야?스토리 보드 기간 애니메이션 자르기
다음은 내가 사용하고있는 코드입니다. ConfigureStoryboard는 애니메이션 주위에 스토리 보드가 생성되는 곳입니다. 좀 더 읽기 쉽도록 easing 함수에 관한 몇 가지 코드를 제거했습니다.
public static void BeginAnimation(
this Transform transform,
DependencyProperty property,
DoubleAnimation animation,
EasingFunction function
)
{
var storyboard = new Storyboard();
ConfigureStoryboard(animation, storyboard, function);
Storyboard.SetTarget(storyboard, transform);
Storyboard.SetTargetProperty(
storyboard,
new PropertyPath(property));
storyboard.Begin();
}
private static void ConfigureStoryboard(DoubleAnimation animation, Storyboard storyboard, EasingFunction function)
{
DoubleAnimation myAnimation = new DoubleAnimation();
storyboard.Duration = animation.Duration;
myAnimation.From = animation.From;
myAnimation.To = animation.To;
storyboard.Children.Add(myAnimation);
}
애니메이션의 길이가 설정되어 있습니다. 설정을 잊어 버린 경우 스토리 보드가 1 초 동안 실행됩니다. 지속 시간을 1 초 미만으로 설정하면 완료되기 전에 정지하기 전에 오래 지속됩니다. – oltman
애니메이션의 지속 시간과 스토리 보드의 지속 시간을 모두 설정해야합니다. 0.3 초 길이의 스토리 보드에 1 초 길이의 애니메이션이 포함되어있는 경우 애니메이션의 처음 0.3 초만 재생됩니다. – KeithMahoney
완벽! 고마워요! – oltman