2012-08-01 2 views
0

...동시 스토리 보드 내가 생각할 수있는 모든 곳에서 보았다,하지만이에 대한 답을 찾을 수없는 7

나는 윈도우 폰 7 (XAML을위한 템플릿 스토리 보드의 종류를 만들고 싶어 및 C#)을 선택한 다음 해당 스토리 보드를 사용하여 여러 개체에 동일한 방식으로 애니메이션을 적용 할 수 있습니다. (즉, 동시에 모든 객체를 90도 회전) 어떤 아이디어입니까?

동적으로 완료되어야합니다. 그 말은 프로그램 중에 여러 다른 스토리 보드에 서로 다른 객체를 지정하려는 것이므로 정적 일 수는 없습니다.

내가 직면 한 주요 문제는 스토리 보드를 다시 사용하기 전에 중지해야하므로 동시에 실행할 수 없다는 점입니다. 그러나 스토리 보드의 임시 복사본을 만들면 동시에 모든 것을 실행할 수 있다고 생각했습니다. 가지고 계신 아이디어를 알려주십시오. 미리 감사드립니다!

나는 같은 그리드 내 개체 (사각형) 초기화 :

이 순간
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <Rectangle Name="rec1" Height="80" Width="10" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,30,140,0"> 
     <Rectangle.RenderTransform> 
     <RotateTransform x:Name="rec1Transform" Angle="0" CenterX="5" CenterY="-10" /> 
     </Rectangle.RenderTransform> 
    </Rectangle> 
    <Rectangle Name="rec2" Height="10" Width="80" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,15,55,0"> 
    . 
    . 
    . 
    </Rectangle> 
</Grid> 

, 내가 몇 번을 사용하려면 4 일반적으로 스토리 보드를 가지고 있고, 나는 버튼의 시리즈를 사용하고 있습니다 모든 애니메이션을 모방합니다. 예를 들면 :

내 스토리 보드

private void rotate1(object parameter, object secondParameter, String Target) 
{ 

    oneTwo.Stop(); 
    oneTwo.Children[0].SetValue(Storyboard.TargetNameProperty, Target); 
    oneTwo.Begin(); 
} 

private void rotate2(object parameter, object secondParameter, String Target) 
{ 
    twoThree.Stop(); 
    twoThree.Children[0].SetValue(Storyboard.TargetNameProperty, Target); 
    twoThree.Begin(); 
} 

private void rotate1Inverse(object parameter, object secondParameter, string Target) 
{ 
    twoOne.Stop(); 
    twoOne.Children[0].SetValue(Storyboard.TargetNameProperty, Target); 
    twoOne.Begin(); 
} 

private void rotate2Inverse(object parameter, object secondParameter, string Target) 
{ 
    threeTwo.Stop(); 
    threeTwo.Children[0].SetValue(Storyboard.TargetNameProperty, Target.ToString()); 
    threeTwo.Begin(); 
} 

내 시뮬레이션 버튼 문제는 내가에 20 개의 사각형에서 동시에 이러한 4 가지 기본 스토리 보드를 사용하고자하는 것입니다

//Rotate Buttons 
private void button_Click1(object sender, RoutedEventArgs e) 
{ 
    rec1Transform.CenterY = -10; 

    rotate2(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec1Transform"); 
} 

private void button_Click2(object sender, RoutedEventArgs e) 
{ 
    rec2Transform.CenterX = -10; 

    rotate1(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec2Transform"); 
} 

private void button_Click3(object sender, RoutedEventArgs e) 
{ 
    rec3Transform.CenterY = -10; 

    rotate1(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec3Transform"); 
} 

private void button_Click4(object sender, RoutedEventArgs e) 
{ 
    rec4Transform.CenterX = -10; 

    rotate2(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec4Transform"); 
} 

private void button_Click5(object sender, RoutedEventArgs e) 
{ 
    rec5Transform.CenterY = -10; 

    rotate2(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec5Transform"); 
} 

private void button_Click6(object sender, RoutedEventArgs e) 
{ 
    rec6Transform.CenterX = -10; 

    rotate2(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec6Transform"); 
} 

private void button_Click7(object sender, RoutedEventArgs e) 
{ 
    rec7Transform.CenterY = -10; 

    rotate1(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec7Transform"); 
} 

//Inverse Rotate Buttons 
private void button_Click1_Inverse(object sender, RoutedEventArgs e) 
{ 
    rec1Transform.CenterY = 90; 

    rotate1Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec1Transform"); 
} 

private void button_Click2_Inverse(object sender, RoutedEventArgs e) 
{ 
    rec2Transform.CenterX = 90; 

    rotate2Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec2Transform"); 
} 

private void button_Click3_Inverse(object sender, RoutedEventArgs e) 
{ 
    rec3Transform.CenterY = 90; 

    rotate2Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec3Transform"); 
} 

private void button_Click4_Inverse(object sender, RoutedEventArgs e) 
{ 
    rec4Transform.CenterX = 90; 

    rotate1Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec4Transform"); 
} 

private void button_Click5_Inverse(object sender, RoutedEventArgs e) 
{ 
    rec5Transform.CenterY = 90; 

    rotate1Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec5Transform"); 
} 

private void button_Click6_Inverse(object sender, RoutedEventArgs e) 
{ 
    rec6Transform.CenterX = 90; 

    rotate1Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec6Transform"); 
} 

private void button_Click7_Inverse(object sender, RoutedEventArgs e) 
{ 
    rec7Transform.CenterY = 90; 

    rotate2Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec7Transform"); 
} 

한 번에 20 개의 모든 직사각형에 애니메이션을 적용합니다. 그러나 각 직사각형에 적용하려는 스토리 보드가 매초마다 변경되기 때문에 각 사각형에 정적 스토리 보드가 할당되는 것을 원하지 않습니다. 동시에 4 개의 스토리 보드를 모두 사용할 것입니다. (즉, 직사각형 중 3 개는 "oneTwo"를 사용하고, 직사각형 중 5 개는 "twoThree", 직사각형 중 8 개는 "oneOw", 직사각형 중 2 개는 "threeTwo"를 사용합니다.

말이된다. 이 프로그램은 많은 사각형을 동시에 애니메이트하는 데에만 기반을두고 있으며, 도움이나 제안을 크게 주시면 감사하겠습니다.

+0

레이아웃에있는 모든 개체를 어떻게 표시합니까? 적절한 순서로 목록이나 격자 또는 부적절한 순서로 이미지를 스택 패널에 바인딩하고 애니메이션을 적용하려는 경우 –

+0

위 사각형에 대한 코드를 게시했지만 어떻게하면 전체를 애니메이션으로 만들 수 있습니까? 같은 시간에 스택 패널의 객체? – Jason

+0

죄송합니다. 나는 바보 같은 존재 여야합니다. 그러나 나는 아직도 이것을 이해할 수 없습니다. 누군가 제발 도와 줄 수 있니? – Jason

답변

0

는 그런 다음 colours..refer 웹에서 목록 상자 항목에 바인딩 목록 상자에 바인딩을 가지고 StackPanel에

<Listbox> 
<ListBox.ItemTemplate>   
    <DataTemplate> 
<StackPanel> 
<StackPanel.Resources> 
    <Storyboard x:Name="FirstStoryBoard"> 
     <DoubleAnimation Storyboard.TargetName="rectangle" 
         Storyboard.TargetProperty="Width" 
         From="0" 
         To="1" 
         //AutoReverse="True" 
         Duration="00:00:01" /> 
    </Storyboard> 
</StackPanel.Resources> 
<Rectangle Name="rectangle" Fill={Binding colour}> 

</Rectangle> 

</StackPanel> 

</ListBox.ItemTemplate> 
</DataTemplate> 
</Listbox> 

에 사각형을 결합하려고합니다.

다음 버튼을 클릭하면 스토리 보드가 시작됩니다. 스토리 보드 어린이 사각형의 너비가 늘어납니다.

FirstStoryboard.begin();

+0

Listbox에 대해 잘 알고 있는데, Windows Phone 7에서 사용할 수 있습니까? Visual Studio 2010에서는 xaml에서이를 인식하지 않기 때문입니다. – Jason