本文将展示如何在特定方向上对项目进行动画处理。这不仅会指导在PathListBox中进行动画制作,还将帮助理解Storyboard的创建(如果是Silverlight的新手)。阅读整篇文章,并在文章末尾留下评论。
让从为之前的示例应用程序创建一个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时间线中添加动画了。确保最后一个关键帧在时间线面板中被选中。将在这个帧中放置一个旋转。由于第一个帧是空的,它将从该关键帧创建一个动画,到最后一个关键帧完成旋转。
转到路径控件的属性面板,并展开“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。
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中定义的动画的混合行为。
如所知,XAML代码已经准备好了,但是如果现在运行应用程序,它不会运行动画。需要调用Storyboard来运行。为此,首先必须通过指定Storyboard名称作为Key从页面资源中获取Storyboard的引用。然后必须调用Begin()方法,它实际上运行了动画。看看代码。在这个例子中,将代码添加到构造函数中。但是根据需要,可以将其放置在代码块的任何部分。
现在运行应用程序,将看到圆形路径开始逆时针旋转。不仅如此,它还开始旋转圆形路径边缘的项目。
这是一个Storyboard创建的小演示,全面覆盖了使用新的PathListBox控件在指定路径的任何方向上动画化任何内容控件。希望这篇文章对Silverlight的初学者有所帮助,让他们对Storyboard有一个基本的了解。请将其收藏并与所有需要学习它的人分享。