5.1 动画特性
通过动画可以创建动态的用户界面,可以不使用事件处理代码,而用声明的方式创建动画,使画面动起来不用编写任何C#代码,并将它无缝地集成到普通的页面中。动画由静态图像快速连续的变换的一种幻觉,各图形间轻微的不同,连串起来,就以为是产生了一个变化,通过快速播放一系列图像而产生的错觉。人脑将这一系列图像看作是一个不断变化的场景。在电影中,摄影机通过每秒记录大量照片(即,帧)来产生这种错觉。当放映机播放这些帧时,观众看到的是运动的图片。
创建逐帧动画意味着每一帧都可以包含不同的图像(或对象)。所生成的动画可能会非常大,并且在运行时要占用大量资源。出于上述原因,Expression Blend 动画将基于记录属性更改的关键帧,并在运行时动态显示属性更改之间的过渡效果。此外,在 Expression Blend 中,所有需要在动画时间线期间显示或消失的对象在整个时间线期间均存在。但可以使用关键帧来更改对象的可见性属性,使其显示或消失。
动画类型分为两类:
①基本动画:可称为From/To/By动画,通过指定一个起始和终止值,或属性的一个偏移来定义动画,如上面的演示一样。动画类型有:DoubleAnimation、ColorAnimation、PointAnimation
②关键帧动画:通过一系列关键帧指定的值之间运动。动画类型有:DoubleAnimationUsingKeyFrames、ColorAnimationUsingKeyFrames、PointAnimationUsingKeyFrames
②AutoReverse:动画播放结束时,是否向后播放。
④Storyboard.TargetName:指定为哪个图形对象设置动画。
⑦EventTrigger对象:具有一系列行为的触发器。
基本操作步骤:
2)按 F6 切换到"动画"工作区。(按 F6 可在可用的工作区之间切换。在"动画"工作区中,"对象和时间线"面板位于美工板的下方。)创建要动态显示的任何对象。对象是指 Expression Blend 中的美工板上的项目。例如,如果您从"工具"面板中选择"矩形",并在美工板上绘制矩形,则会创建一个矩形对象。
4)在"资源名(关键字)"字段中,键入时间线的名称,然后单击"确定"。Expression Blend 将进入时间线录制模式,并且播放指针 位于 0 秒标记处。当处于录制模式中时,所设置的任何属性都将在该时间线上自动记录一个关键帧。
7)在"对象和时间线"面板中,将播放指针拖动到动画的结束时间点处。
8)如果希望对象在动画结束和开始时的外观相同,请单击"记录关键帧"按钮。
9)将播放指针移到时间线上希望属性发生改变的位置处。
10)若要查看刚才创建的动画,可单击"对象和时间线"顶部的"播放"按钮。
范例 滚动的球
创建一个来回滚动的球。
2
)在
"
工具
"
面板中,选择其中椭圆形工具,如图图
11.3-1
。
图
11.3-1
如图
11.3-2
如图
11.3-3
11.3-6
11.3-7
图
11.3-8
8
)按住
Shift
,单击“工具箱”中的“选择”工具,选中两个椭圆。
9
)在“对象”菜单上,单击合并、排斥。
若要将所有形状或路径均合并到单一对象中,请单击
"
相并
"
。
若要根据相交部分剪切形状或路径,但保留所有未相交部分,请单击
"
相割
"
图
11.3-10
12
)
F6
切换到
"
动画
"
工作区,准备创建脚本(
Storyboard
)实现动画。
按
F6
可在可用的工作区之间切换。在
"
动画
"
工作区中,
"
对象和时间线
"
面板位于美工板的下方。
15
)
"
对象和时间线
"
面板中,选择圆。
图
11.3-12
17
)
"
对象和时间线
"
面板中,将播放点拖到
1s
的时间点上,移动圆到新的位置,
18
)播放点拖到下一时间点上,不断重复,让圆绕一圈。
<UserControl.Resources>
<Storyboard x:Name="Storyboard1" AutoReverse="True" RepeatBehavior="2x">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:01" Value="-37"/>
<EasingDoubleKeyFrame KeyTime="00:00:02" Value="-70"/>
<EasingDoubleKeyFrame KeyTime="00:00:03" Value="-97"/>
<EasingDoubleKeyFrame KeyTime="00:00:04" Value="-43"/>
<EasingDoubleKeyFrame KeyTime="00:00:05" Value="-4"/>
<EasingDoubleKeyFrame KeyTime="00:00:06" Value="36"/>
<EasingDoubleKeyFrame KeyTime="00:00:07" Value="67"/>
<EasingDoubleKeyFrame KeyTime="00:00:08" Value="105"/>
<EasingDoubleKeyFrame KeyTime="00:00:09" Value="73"/>
<EasingDoubleKeyFrame KeyTime="00:00:10" Value="45"/>
<EasingDoubleKeyFrame KeyTime="00:00:11" Value="13"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:01" Value="-3"/>
<EasingDoubleKeyFrame KeyTime="00:00:02" Value="-9"/>
<EasingDoubleKeyFrame KeyTime="00:00:03" Value="-17"/>
<EasingDoubleKeyFrame KeyTime="00:00:04" Value="-29"/>
<EasingDoubleKeyFrame KeyTime="00:00:05" Value="-31"/>
<EasingDoubleKeyFrame KeyTime="00:00:06" Value="-31"/>
<EasingDoubleKeyFrame KeyTime="00:00:07" Value="-27"/>
<EasingDoubleKeyFrame KeyTime="00:00:08" Value="-16"/>
<EasingDoubleKeyFrame KeyTime="00:00:09" Value="-6"/>
<EasingDoubleKeyFrame KeyTime="00:00:10" Value="-3"/>
<EasingDoubleKeyFrame KeyTime="00:00:11" Value="-1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
22
)启动动画:
Storyboard1.Begin ();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。