2009-11-30 69 views
1

我有一个似乎是由自身随机停止故事板,我不能为我的生命找出原因。WPF故事板停止本身

它似乎停止和随机间隔。

private void CreateStoryboard(int from) 
    { 
     int? targetTo; 
     Duration dur; 
     targetTo = 150; 
     dur = 150; 

     Int32Animation element = new Int32Animation(); 
     element.From = from; 
     element.To = targetTo; 
     element.Duration = dur; 
     Storyboard.SetTargetProperty(element, new PropertyPath(CurrentFrameProperty)); 
     _filmstripStoryboard = new Storyboard {SpeedRatio = this.FrameRate}; 
     _filmstripStoryboard.Children.Add(element); 
     _filmstripStoryboard.Completed += new EventHandler(FilmstripStoryboard_Completed); 
     _filmstripStoryboard.Begin(this, true); 
    } 

正如你所看到的IM影响自定义“CurrentFrameProperty” DP,它具有打印出当前帧的回调方法。

出于某种原因,我刚才不知道为什么,故事板刚刚停止。完成的事件不会被触发,并且回调方法停止被调用。

而且我相信,我不是要求停止()的任何地方。

如果任何人有过这个问题,也可以帮我调试的话,我将非常感激。

回答

0

这是解构器!我的参考故事板和动画的对象被破坏了,所以动画看起来就像冻结了。

用户错误:)

0

你的代码应该可以工作。我不确定SpeedRatio = this.FrameRate是做什么的,但是您可以轻松地测试您的代码并删除该部分。我最好的猜测是,其他一些代码会影响你的DpendencyProperty,而且多线程代码正在咬你。

+0

你能想到一种调试方法吗? – Mark 2009-11-30 01:04:52

+0

对于初学者来说,隔离这段代码是很重要的,因为如果没有其他因素会影响你的DP,你可以100%确定它是有效的。如果是这样,一次只添加一个特性的整个项目的行为,直到你可以重现问题。听起来很标准,呃? ;-) 祝你好运! – Dabblernl 2009-11-30 01:17:39

+0

有没有办法检查故事板(或动画)是否被丢弃?我知道IDispose接口,但是如果对象简单地设置为null,它会被调用吗? – Mark 2009-11-30 01:48:04