2009-08-18 8 views
1

저는 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
private static void ConfigureStoryboard(DoubleAnimation animation, Storyboard storyboard, EasingFunction function) 
    { 
     DoubleAnimation myAnimation = new DoubleAnimation(); 
     myAnimation.Duration = animation.Duration; 
     myAnimation.From = animation.From; 
     myAnimation.To = animation.To; 

     storyboard.Children.Add(myAnimation); 
    } 

애니메이션은 기본을 얻을 다른 기간이 필요하고 스토리 보드는 0.3S에 출마하기 때문에, 애니메이션의 세 번째는 중지하기 전에 실행됩니다.

+0

애니메이션의 길이가 설정되어 있습니다. 설정을 잊어 버린 경우 스토리 보드가 1 초 동안 실행됩니다. 지속 시간을 1 초 미만으로 설정하면 완료되기 전에 정지하기 전에 오래 지속됩니다. – oltman

+1

애니메이션의 지속 시간과 스토리 보드의 지속 시간을 모두 설정해야합니다. 0.3 초 ​​길이의 스토리 보드에 1 초 길이의 애니메이션이 포함되어있는 경우 애니메이션의 처음 0.3 초만 재생됩니다. – KeithMahoney

+0

완벽! 고마워요! – oltman

관련 문제