Я делаю игру SizzlingHot на WPF. У меня есть холст, в котором можно загрузить падающие изображения фруктов. Когда я нажимаю на startButton, он должен создать раскадровку с doubleAnimation для падающих фруктов. У меня есть следующий код в методе:Создать раскадровку и двойную аппроксимацию
NameScope.SetNameScope(this, new NameScope());
Cherry cherry = new Cherry(); // I get the image from this class
// GameCanvas.Children.Add(cherry.FruitImage); // idk if this should be here and its invalid because the parameter in the parantheses shoud be UI element it does not allow BitmapImage
DoubleAnimation myDoubleAnimation = new DoubleAnimation(100, 500, new Duration(TimeSpan.FromSeconds(5)));
myDoubleAnimation.From = -150;
myDoubleAnimation.To = 500;
Storyboard.SetTargetProperty(myDoubleAnimation, new PropertyPath("(Canvas.Top)"));
Storyboard.SetTarget(myDoubleAnimation, cherry.FruitImage);
Storyboard myStoryboard = new Storyboard();
myStoryboard.Children.Add(myDoubleAnimation);
GameCanvas.Resources.Add(myStoryboard,cherry.FruitImage);
myStoryboard.Begin(this, true);
Когда я запускаю это, на последней строке, это дает мне
InvalidOperationException - Операция не действует в связи с текущей стадии объекта ,
Я не понимаю, что может быть проблемой здесь, когда я отлаживаю его. Я вижу, что изображение найдено.
Где именно вы добавляете элемент на холст? Вы должны анимировать содержащееся «Изображение», а не источник «BitmapImage». –
Я добавляю его с Canvas.Children.Add (myImage), и это не источник, это мое изображение, но появляется ошибка. Невозможно преобразовать Bitmap в System.Windows.UIElement. Разве это не правильный метод добавления материала в холст? –