考えられるところはすべて調べましたが、これに対する答えが見つかりません...
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」を使用します)
すべてが理にかなっていることを願っています。このプログラムは、多くの長方形を同時にアニメーション化することのみに基づいており、ヘルプや提案があれば大歓迎です。