0
我已經在循環中動態創建了一系列圖像,以及每個圖像的動畫和故事板,並且我正在尋找在動畫完成後刪除圖像。圖像,動畫和故事板存儲在數組中以供參考。C#在完成事件中引用動態創建的圖像
動畫有不同的持續時間,畫布上還有其他元素,我不想刪除。
這是我必須生成圖像,動畫和故事代碼:
for (int i = 0; i < apples.Length; i++)
{
Image apple = new Image();
apple.Source = new BitmapImage(new Uri(@"pack://application:,,,/fall;component/Resources/apple.png"));
apple.Height = 48;
apple.Width = 48;
int x = r.Next(5, (int)cGame.ActualWidth - 53);
int y = (int)cGame.ActualHeight - 48;
Canvas.SetLeft(apple, x);
Canvas.SetTop(apple, y);
apples[i] = apple;
}
for(int i = 0; i < speeds.Length; i++)
{
DoubleAnimation speed = new DoubleAnimation();
speed.From = 0;
speed.To = cGame.ActualHeight;
speed.Duration = new TimeSpan(0, 0, 0, 0, r.Next(2, 6) * 500);
speeds[i] = speed;
speeds[i].Completed += new EventHandler(aniComplete);
}
for (int i = 0; i < sbs.Length; i++)
{
Storyboard sb = new Storyboard();
sb.Children.Add(speeds[i]);
Storyboard.SetTarget(speeds[i], apples[i]);
Storyboard.SetTargetProperty(speeds[i], new PropertyPath(TopProperty));
sbs[i] = sb;
}
到目前爲止,我已經創建了一個完成的事件,並將其連接到每個動畫。我使用此刪除元素:
canvas.Children.RemoveAt(1);
但它只是按順序刪除元素,跳過我想保留的元素。這些動畫隨機運行並具有隨機的持續時間,因此這些元素很容易就可以按順序完成其動畫。
我將如何引用已完成事件中的特定元素?我嘗試引用發件人,但我不知道我應該把它作爲(UIElement)似乎沒有工作。