Silverlight 动画制作指南:Storyboard的创建与应用

本文将展示如何在特定方向上对项目进行动画处理。这不仅会指导在PathListBox中进行动画制作,还将帮助理解Storyboard的创建(如果是Silverlight的新手)。阅读整篇文章,并在文章末尾留下评论。

创建Storyboard动画

让从为之前的示例应用程序创建一个Storyboard开始。在这里,将旋转圆形路径,当路径旋转时,也会旋转路径中的项目。在Expression Blend中创建Storyboard非常简单,因为它为UI提供了更多的功能,因此将使用Blend来设计动画。

按照以下步骤了解Storyboard动画,并从示例开始:

选择名为“path”的Path控件。

现在,如下图所示,点击“对象和时间线”部分旁边的‘+’图标下拉菜单。这是在Silverlight中创建Storyboard的选项。为什么是Silverlight?这个选项在WPF应用程序中也是可用的,用于创建Storyboard。

从下拉菜单中,会看到一个名为“New…”的选项。点击它。

一旦从下拉菜单中点击了“New…”选项,它将打开一个名为“创建Storyboard资源”的对话框。这里有一个TextBox,可以在其中输入Storyboard的名称。在示例中,将将其命名为“sb_RotatingItems”。点击“OK”继续。

在时间线上创建关键帧

上述步骤将为创建一个空白动画。现在,是时候给动画添加视觉效果了。会注意到创建的Storyboard已经在左侧面板中被选中,并且在UI设计面板中,它被红色边框包围。这意味着现在可以在设计窗口中修改Storyboard。在UI中所做的任何更改都将包含在动画中。

对于示例,希望以圆形方式旋转它。所以,让跳入其中创建动画。按照下面提到的简单步骤,并尝试清楚地理解每一个步骤。如果有任何疑问,请使用下面的评论/反馈表。会尽快回答问题。

在这里,会看到一个带有‘+’标志的红色圆形图标(步骤1和步骤2)。这表明Storyboard处于编辑模式。在这种编辑模式下,所做的任何更改都会反映在动画中。

在快照的步骤2中,会看到一个黄色标记在时间线上。这用于将时间线向前或向后移动。

让稍微放大一点。会注意到时间线上有以下按钮。还有更多,但以下按钮在创建/修改Storyboard时更有用。

现在在步骤1中,时间线上有一个带有‘+’标志的椭圆形。这是在时间线上创建一个关键帧。

在步骤2和步骤3中,有五个按钮可用。第一个按钮将黄色导航器定位到时间线的第一个位置。第二个按钮将导航器向后移动一步。第三个按钮播放当前动画。第四个按钮将导航器向前移动一个关键帧。最后一个按钮对于将导航器移动到Storyboard的关键帧非常有用。

让为Storyboard创建一个新的关键帧(第一个在零位置)。

选择在Grid中添加的路径控件,然后点击“记录关键帧”按钮,在零时间线上添加一个新的帧。确保黄色导航器放置在零位置。

这将在导航器的相同位置为选定的路径控件添加一个空白关键帧。

现在第一个关键帧已经准备好了,是时候为特定持续时间做一些动画了。将在5秒内完成它。可以在时间线上使用任何持续时间。

将导航器拖到第5秒。也可以尝试下一个关键帧按钮,将导航器移动一个帧位置。

再次点击“记录关键帧”按钮。这将在时间线上添加一个新的关键帧。

会注意到两个关键帧通过选择连接。参见下面的快照。

向Storyboard添加动画

是时候在Storyboard时间线中添加动画了。确保最后一个关键帧在时间线面板中被选中。将在这个帧中放置一个旋转。由于第一个帧是空的,它将从该关键帧创建一个动画,到最后一个关键帧完成旋转。

转到路径控件的属性面板,并展开“Transform”框架。

在那里,会找到另一个名为Rotate的标签页。点击它,它将打开标签页内容。

在名为degree的TextBox中输入一些旋转角度的数值。如果输入正值,它将顺时针旋转;如果输入负值,动画将逆时针进行。在案例中,需要一个完整的旋转,所以可以使用“360”。这将进行顺时针旋转。

由于需要圆形路径及其内容的逆时针完整旋转,将“-360”作为值输入到degree输入框中。

现在在这里创建的动画将运行一次旋转,然后停止。但是,需要一个无限循环的旋转。按照下面给出的步骤添加动画的重复计数:

在“对象和时间线”面板中,查看路径控件附近。会看到它可以展开。点击小箭头展开控件的内容。

会看到“RenderTransform”作为直接子项,然后是“Rotation”作为其同级项。

右键单击“Rotation”项将打开一个名为“编辑重复计数”的上下文菜单。

点击“编辑重复计数”上下文菜单项将打开名为“编辑重复”的对话框。

在新打开的对话框中,可以在“Repeat”TextBox中提供任何数字作为值。如果输入5,动画将连续运行5次。还有一个按钮在右侧称为“设置为永远”。点击它将设置动画循环无限期。

一旦点击“设置为永远”,这将设置Repeat属性的值为“Forever”,并将在它旁边的TextBox中可见。

点击“Ok”以保存对Storyboard所做的更改。

现在检查下面的截图,有一个名为“关闭Storyboard”的按钮在Storyboard名称和“添加新Storyboard”菜单附近。点击它将关闭Storyboard,并将动画从编辑模式切换到正常模式。

会看到一个箭头放在“关闭Storyboard”按钮附近。点击它将打开一个搜索面板,其中列出了附加到页面的所有Storyboard。

XAML知识

Storyboard已经准备好了。但是Blend IDE在XAML页面上做了什么?让看看这个:

会注意到它将Storyboard作为资源添加到UserControl中,它有一个DoubleAnimationUsingKeyFrames作为子项。它针对UI控件名为“path”的RenderTransform的Rotation属性。

RepeatBehavior=”Forever”代表动画的循环时间。在这里它将是无限的。如果在这里输入5,它将只调用动画5次。

稍后,会在XAML中看到两个帧。在最开始添加的第一个关键帧将有一个值=“0”,最后一个在5秒持续时间后放置的帧将有一个值=“360”。从这里,可以清楚地理解动画将从0时间线开始,从一个0度的角度变化开始,并在5秒后以360度的角度结束。

让更多地了解名为“path”的UI控件。会看到它有一个名为CompositeTransform的子项,包裹在RenderTransform中。这确保了有一个平滑的动画效果,无论是控件的缩放、旋转、倾斜还是TranslateTransform,即控件的位置。“CompositeTransform”将具有Storyboard中定义的动画的混合行为。

从代码中调用Storyboard

如所知,XAML代码已经准备好了,但是如果现在运行应用程序,它不会运行动画。需要调用Storyboard来运行。为此,首先必须通过指定Storyboard名称作为Key从页面资源中获取Storyboard的引用。然后必须调用Begin()方法,它实际上运行了动画。看看代码。在这个例子中,将代码添加到构造函数中。但是根据需要,可以将其放置在代码块的任何部分。

演示

现在运行应用程序,将看到圆形路径开始逆时针旋转。不仅如此,它还开始旋转圆形路径边缘的项目。

结束语

这是一个Storyboard创建的小演示,全面覆盖了使用新的PathListBox控件在指定路径的任何方向上动画化任何内容控件。希望这篇文章对Silverlight的初学者有所帮助,让他们对Storyboard有一个基本的了解。请将其收藏并与所有需要学习它的人分享。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485