0
我想創建一個基於用戶輸入的動畫模擬程序。當我嘗試爲mystoryboard.completed事件創建事件處理程序時,我遇到了一個錯誤。我已經閱讀了許多不同的API文章和論壇帖子,關於事件處理和故事板,但我似乎無法找到我錯誤的原因。Storyboard.Completed事件處理程序防止代碼執行
我的代碼編譯和窗口顯示,但我設置的事件處理程序行後沒有得到執行。下面顯示了我設置所有內容的主窗口。
public MainWindow()
{
InitializeComponent();
titleTextBlock.Text = "MainWindow()";
//this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
mainSystem = new BalanceSystem(3);
leftBlock = new SystemComponents.Block(0, 100, 150, 100, mainSystem);
rightBlock = new SystemComponents.Block(1, 100, 150, 100, mainSystem);
balanceBeam = new SystemComponents.Bar(0, 0, 250, 150, 100, mainSystem);
mainSystem.addComponent(leftBlock, leftWeight);
mainSystem.addComponent(rightBlock, rightWeight);
mainSystem.addComponent(balanceBeam, balanceBar);
titleTextBlock.Text = "LOADED";
}
「BalanceSystem」的構造函數是當事情開始出錯的時候。它步入如下所示的構造函數:
public BalanceSystem(int count)
{
componentCount = count;
masterTimeline = new MovementTimeline(1);
}
進入構造函數「BalanceSystem」之後,它移動到構造爲我custome類「MovementTimeline」。打破一切的線是創建和訂閱masterStoryboard.Completed的事件處理程序。
class MovementTimeline
{
private Storyboard masterStoryboard;
private Duration systemDuration;
public MovementTimeline(int totalTime)
{
systemDuration = new Duration(TimeSpan.FromSeconds(totalTime));
masterStoryboard.Completed += new EventHandler(masterStoryboard_Completed);
}
void masterStoryboard_Completed(object sender, EventArgs e)
{
masterStoryboard.Children.Clear();
//masterStoryboard.Completed -= masterStoryboard_Completed;
}
}
一旦編譯器或程序命中其中新事件處理程序創建它停止執行我的代碼的其餘部分,並加載窗口是行。我不能爲我的生活弄清楚爲什麼會發生這種情況。
這是從MovementTimeLine類的完整代碼添加事件處理程序? – 2014-09-03 13:40:06
因爲它在我看來就像添加事件處理程序而不創建StoryBoard對象。 – 2014-09-03 13:46:44
不,它不是完整的MovementTimeLine類其餘的只是添加和刪除動畫的方法,並且與構造函數無關。哇,我完全錯過了。非常感謝你的幫助,解決了我的問題。我應該如何將其標記爲我的答案? – Wired365 2014-09-03 14:00:06