private DoubleAnimation CreateAnimationAngleEgg(Egg egg) { DoubleAnimation angle = new DoubleAnimation { Duration = TimeSpan.FromSeconds(speedMoveEgg), To = 360, From = 0 }; Storyboard.SetTarget(angle, Basket); Storyboard.SetTargetProperty(angle, new PropertyPath("(UIElement.RenderTransform).(RotateTransform.Angle)")); return(angle); }
/// <summary> /// Метод начала игры /// </summary> private void StartGame() { DispatcherTimer timerSpawnEgg = new DispatcherTimer { Interval = TimeSpan.FromSeconds(speedSpawnEgg) }; // Устанавливаем таймер появления яйца с интервалом speedSpawnEgg; //Действие таймера который он будет выполнять с интервалом speedSpawnEgg; timerSpawnEgg.Tick += (s, e) => { Egg egg = RandomEgg(); // Получаем случайное яйцо с рандомным цветом; Storyboard storyAnimation = new Storyboard(); storyAnimation.Children.Add(CreateAnimationAngleEgg(egg)); storyAnimation.Children.Add(CreateAnimationMoveEgg(egg)); storyAnimation.Begin(); // egg.egg.BeginAnimation(MarginProperty, CreateAnimationMoveEgg(egg)); // Добавление анимации "переката" яйца по платформе; GamePanel.Children.Add(egg.egg); // Добавление яйца на форму; }; timerSpawnEgg.Start(); // Запуск цеха по созданию яиц. }
/// <summary> /// Устанавливает свойства анимации "переката" /// </summary> /// <param name="egg">Яйцо</param> /// <returns>Анимация "переката" яйца по платформе</returns> private ThicknessAnimation CreateAnimationMoveEgg(Egg egg) { ThicknessAnimation anime = new ThicknessAnimation { Duration = TimeSpan.FromSeconds(speedMoveEgg) }; // Анимация "переката" с длиной выполнения speedMoveEgg; Thickness[] startAndEndPointMoveEgg = RandomPlatform(rand.Next(1, 5)); // Рандомим платформу по которой будет катиться яйцо; anime.From = startAndEndPointMoveEgg[0]; // Устанавливаем начальную точку пути яйца; anime.To = startAndEndPointMoveEgg[1]; // Устанавливаем конечную точку пути яйца; Storyboard.SetTarget(anime, egg.egg); Storyboard.SetTargetProperty(anime, new PropertyPath("Margin")); // Завершение анимации "переката" и переход на новую анимацию "падения"; anime.Completed += (s, e) => { egg.egg.BeginAnimation(MarginProperty, CreateAnimationDownEgg(egg)); // Установка новой анимации "падения"; eggs.Add(egg); // Добавление в список. }; return(anime); }