0

考えられるところはすべて調べましたが、これに対する答えが見つかりません...

Windows Phone 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();
}

マイ シミュレーション ボタン

//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");
}

問題は、これらの 4 つの基本的なストーリーボードを一度に 20 個の長方形で同時に使用して、20 個の長方形すべてを一斉にアニメーション化することです。しかし、各四角形に適用したいストーリーボードは毎秒かそこら変化するため、各四角形に静的なストーリーボードを割り当てたくありません。また、同時に 4 つの絵コンテをすべて使用します。(つまり、3 つの長方形には「oneTwo」、5 つの長方形には「twoThree」、8 つの長方形には「twoOne」、2 つの長方形には「threeTwo」を使用します)

すべてが理にかなっていることを願っています。このプログラムは、多くの長方形を同時にアニメーション化することのみに基づいており、ヘルプや提案があれば大歓迎です。

4

1 に答える 1