我正在开发一个WPF应用程序,它显示了许多与MediaElement中显示的视频同步动画的图形元素(RectangleGeometries和Splines)。
同步树的构造如下:
由于要显示和动画的元素的动态特性,所有这些都是在代码中构造和管理的,即没有XAML。设置和播放,寻找等等,完美无缺。
然而,我面临的问题如下:
可以不时地更新动画元素(例如,动画关键帧被更新,添加,移除......),同时仍然显示视频,尽管可能处于暂停状态。简单地更新原始动画没有任何效果,因为在故事板播放期间显然使用了所有动画的冻结副本(Freezable)(查看源代码,当分配时钟并且动画应用于动画时,这种冻结似乎发生在Begin()方法中。依赖属性)。我试过让我的动画不可解析(CanFreeze == false),但这只会导致异常而不播放任何内容。
有没有办法只更新一些动画(例如,只有 ParallelTimeline 0和子),而不强制重置整个故事板,也不会破坏与原始MediaTimeline的同步或强制MediaTimeline重新加载(这涉及重新加载和重新搜索相关媒体并造成重大延迟)?