Я посмотрел везде, где я мог думать, но я не могу найти ответ на этот вопрос ...одновременные раскадровки в Windows Phone 7
Я хочу, чтобы сделать своего рода шаблон раскадровки для 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 раскадровки одновременно. (т. е. я буду использовать «oneTwo» для 3 прямоугольников, «twoThree» для 5 из прямоугольников, «twoOne» для 8 прямоугольников и «threeTwo» для 2 прямоугольников)
Я надеюсь, что все имеет смысл. Программа основана исключительно на анимации многих прямоугольников в одно и то же время, и любая помощь или предложения будут с благодарностью оценены.
Как вы показываете все объекты в макете. в правильном порядке, например, в списке или в сетке или неправильно. Если вы хотите правильно показать привязку изображений к стеке и анимации –
, я разместил свой код для моих прямоугольников выше, но как бы я смог оживить все объекты в стеке панели одновременно? – Jason
Прошу прощения, я, должно быть, тупой или что-то, но я все еще не могу понять это. Кто-то может помочь? – Jason