2013-11-26 4 views
0

다음 코드는 원래 WinRT로 변환하는 WPF 응용 프로그램의 일부였습니다. 애니메이션을 실행하려고 할 때 그러나, 그들은 상호 배타적 인 것으로 보인다 (즉, 한 번에 하나, 둘 일이다,하지만 - WPF에서 나는 그들을 함께 실행할 수있는 반면) :Windows App Store에서 여러 애니메이션 실행

private void SpinAndDisappear_Click(object sender, RoutedEventArgs e) 
    { 
     UIElement obj = (UIElement)SpinAndDisappear; 

     obj.RenderTransform = new CompositeTransform(); 

     var story = new Storyboard(); 

     var xAnim = new DoubleAnimation(); 
     var yAnim = new DoubleAnimation();    

     xAnim.Duration = TimeSpan.FromSeconds(2); 
     yAnim.Duration = TimeSpan.FromSeconds(2);    

     xAnim.To = 0; 
     yAnim.To = 0; 

     story.Children.Add(xAnim); 
     story.Children.Add(yAnim); 

     Storyboard.SetTarget(xAnim, obj); 
     Storyboard.SetTarget(yAnim, obj); 

     Storyboard.SetTargetProperty(xAnim, "(UIElement.RenderTransform).(CompositeTransform.ScaleX)"); 
     Storyboard.SetTargetProperty(yAnim, "(UIElement.RenderTransform).(CompositeTransform.ScaleY)"); 

     story.Begin(); 

     SpinAnimation(); // If commented out, the button changes size, 
         // and if not, it spins, but not both 
    } 

    void SpinAnimation() 
    { 
     UIElement obj = (UIElement)SpinAndDisappear; 

     obj.RenderTransform = new RotateTransform(); 
     var storySpin = new Storyboard(); 
     var spinAnim = new DoubleAnimation(); 
     spinAnim.Duration = TimeSpan.FromSeconds(2); 
     spinAnim.From = 0; 
     spinAnim.To = 360; 
     storySpin.Children.Add(spinAnim); 
     Storyboard.SetTarget(spinAnim, obj); 
     Storyboard.SetTargetProperty(spinAnim, "(UIElement.RenderTransform).(RotateTranform.Angle)"); 

     storySpin.Begin(); 
    } 

그래서 내 질문에 : WinRT에서 동시에 둘 다 수행하는 방법은 무엇입니까?

답변

1

하나의 Storyboard 만 WinRT/XAML의 단일 요소에서 실행할 수 있습니다. 두 개를 서로 독립적으로 실행해야하는 경우 가장 쉬운 방법은 두 개의 요소를 가지고 개별 요소를 대상으로 지정하는 것입니다. 귀하의 경우 부모 GridScaleTransform, 자식 컨트롤을 RotateTransform으로 가질 수 있습니다. 그런 다음 Storyboard.SetTarget()을 호출하여 별도의 스토리 보드에서 별도의 변환을 타겟팅하면 모든 것이 올바르게 작동합니다.

+0

우수 아이디어 - 많은 감사합니다! –

관련 문제