我有 10 个 XAML 文件,每个文件都包含一个动画帧(它们是从 SWF 转换而来的,因此每个对象都没有关键帧信息)。每个 XAML 文件都包含一个 Canvas,每个帧都有不同的形状。
我想创建 1 个 XAML 文件,其中包含每个帧的 Canvas 信息,然后使用 XAML 在适当的时间显示每个 Canvas,因此每一帧都一个接一个地显示。这是一个好方法吗?我怎样才能做到这一点?我在 Blend 中尝试过,但似乎不可能,因为我的对象在每一帧上都不同(即我没有为对象属性设置动画)。
我只是在寻找一个声明性的解决方案。
最佳答案
您可以尝试以下操作:
<Grid x:Name="FrameContainer">
<Canvas x:Name="Canvas1" Visibility="Collapsed"><!-- shapes --></Canvas>
<Canvas x:Name="Canvas2" Visibility="Collapsed"><!-- shapes --></Canvas>
<Canvas x:Name="Canvas3" Visibility="Collapsed"><!-- shapes --></Canvas>
<Canvas x:Name="Canvas4" Visibility="Collapsed"><!-- shapes --></Canvas>
<Canvas x:Name="Canvas5" Visibility="Collapsed"><!-- shapes --></Canvas>
<Canvas x:Name="Canvas6" Visibility="Collapsed"><!-- shapes --></Canvas>
...
</Grid>
然后制作一个 Storyboard,切换每个 Canvas 的可见性,使其看起来像逐帧动画。
我在一个项目中遇到了类似的问题,我制作了一个自定义控件,它有一个 (int)Frame 依赖属性,负责从模板中隐藏/显示元素。您也可以为 Frame 属性设置动画。
关于wpf - XAML 中的简单动画书动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5728754/