`
charrysong
  • 浏览: 50647 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Expression Blend实例中文教程(7) - 动画基础快速入门

阅读更多

通过前面文章学习,已经对Blend的开发界面,以及控件有了初步的认识。本文将讲述Blend的一个核心功能,动画设计 。 大家也许注意到,从开篇到现在,所有的文章都是属于快速入门,是因为这些文章,都是我曾经学习的经验和工作中使用到的经验总结出来的。在我个人认为,掌握 了这些核心功能也就等于掌握了Blend的开发方法。在以后开发项目中使用Blend开发工具,这些知识应该足够用了。当然,特殊项目也需要特殊对待,如 果您在项目开发中,有新的Blend开发经验,希望您能够毫不吝啬的分享,在这里,我表示深深的谢意。

 

言归正传,关于Silverlight的动画设计。在讲述Blend设计Silverlight动画之前,我想介绍一些动画设计基础知识。

 

学习Silverlight动画之前,首先需要明确一下三点核心概念:

1. Silverlight动画是基于时间线的;   开发人员可以设置初始状态,结束状态和动画时间段,Silverlight会自动计算生成动画效果。

2. Silverlight动画是对象属性的修改过程;   例如,一个按钮动画,用户点击后,按钮会自动增大,其动画原理,就是对按钮的宽度和高度在一定时间段中进行改变置,即生成动画效果。

3. Silverlight动画中,不同的数据类型,需要使用不同的动画类;   这和编程中的类型匹配很相似,假如要在动画中实现修改控件宽度或者高度,则需要使用DoubleAnimation类。动画实现控件背景色,则需要使用ColorAnimation类

 

在以上三点核心概念下,我们将列举一些基础概念,对其进行解释,

 

首先要明白Silverlight动 画类型,在Silverlight的动画设计中,动画类型被分为两类,分别是:From/To/By 动画和关键帧动画。 还有一些专业开发人士称这两个类型为线性插值动画(Linear Interpolation)和关键帧动画(Key-frame Animation)。

1. From/To/By 动画 ,也称为线性插值动画(Linear Interpolation),是Silverlight类型中最简单的一种动画。开发人员只需要设置动画开始值(From),动画终止值(To)和动画相对改变值(By), 即 可实现Silverlight动画效果。从字面意思可以理解From,To和By,From是设置动画在时间线中的开始位置,To是设置动画在时间线中的 结束位置,而By和To类似,但是比To更灵活一些,设置By,不用关心具体属性数值改变,也不用关心动画具体经历的时长。该动画类型,只是三种动画数据 类型类,分别是:DoubleAnimation,ColorAnimation和PointAnimation。这三种数据类型类,分别用于 Double数据类型,Color数据类型和Point数据类型。其中DoubleAnimation类是最为常用的一种。例如,修改对象的高度和宽度, 就是不错的例子。我们经常会在项目代码中看到:

1  < DoubleAnimation  From ="20"  To ="100"  Duration ="0:0:5" ></ DoubleAnimation >

 

这是一个指定对象的属性值在5秒内从20到100改变的动画,也是最简单的动画语句。这里我们忽略了目标对象属性,后文将有详细代码,这里仅做演示。

 

2.  关键帧动画(Key-frame Animation), 相比线性插值动画(Linear Interpolation)要更加灵活和强大。在关键帧动画中,可以不用指定具体的开始点和结束点,仅需要设置关键帧和相关动画控制方法,Silverlight将自动生成动画效果。这个动画类型,有两个重要概念,关键帧和动画控制方法。

关键帧可以理解为对象属性值,每设置一个关键帧,也就是修改一次对象属性值。

动画控制方法,也可以理解为动画过渡效果,是指从某一个关键帧开始过渡到下一个关键帧的动画效果。默认微软提供三种动画控制方法:线性(Linear),离散(Discrete)和样条(Spline) 。为了能够让读者快速入门动画概念,这里我暂时不细述以上三种动画控制方法,将在后文使用单独篇幅进行描述。

关键帧动画,也有相关动画数据类型 类,分别是 DoubleAnimationUsingKeyFrames,ColorAnimationUsingKeyFrames,PointAnimationUsingKeyFrames 和ObjectAnimationUsingKeyFrames。其中前三个数据类型类用法和 DoubleAnimation,ColorAnimation和PointAnimation相同,而 ObjectAnimationUsingKeyFrames是关键帧动画特有的数据类型类,可以替代任意数据类型,例如,假如想实现一个控件的可见性动 画效果,我们需要控制该控件的Visibility属性,而该属性不属于Double,Color和Point任一类型,这里便可以使用 ObjectAnimationUsingKeyFrames。在后文,会有实例进行说明。

 

在了解了Silverlight动画类型后,另外一个重要的基础概念是StoryBoard。

StoryBoard 是 管理时间线的类,开发人员可以使用该类管理和控制多个动画进程。例如,控制动画的播放,暂停,停止或者改变动画位置等功能,不仅如此,通过 StoryBoard还可以为动画指定控件和控件属性。在Blend中,微软内置了一个StoryBoard时间线编辑器,设计人员和开发人员可以脱离代 码使用视图方式方便的设计动画效果。本系列着重介绍Blend应用,所以,后文将详细介绍StoryBoard在Blend中的设计方法。

 

相信不少新手看了以上的基础概念,还是比较困惑,下面看看微软提供的Silverlight动画简单类图:

从上图可以看出,线性插值动画,关键帧动画和StoryBoard都是继承自System.Windows.Media.Animation.Timeline. 也就是说,以上三个类都继承了Timeline的相关属性,下面我们分别看一下Timeline基类属性。

1.   AutoReverse 属性,类型为Bool, 该属性如果为True,指定动画将正序运行后,反序运行一次。例如,有一按钮动画效果,改变宽度从20到100后,动画将从100再回到20.

 

 1  < Grid  x:Name ="LayoutRoot"  Background ="White" >
 2      < Grid.Resources >
 3         < Storyboard  x:Name ="Grow"  AutoReverse ="True"   >
 4             < DoubleAnimation  Storyboard.TargetName ="btnGrow"  
 5                Storyboard.TargetProperty ="Width"
 6                From ="20"  To ="100"  Duration ="0:0:5" >
 7             </ DoubleAnimation >
 8         </ Storyboard >
 9      </ Grid.Resources >
10      < Button  x:Name ="btnGrow"  Width ="20"  Height ="150"  Content ="按钮动画" />
11  </ Grid >

 

2.  BeginTime 属性,类型为Nullable<TimeSpan>,如果该属性为空(Null),说明该动画没有BeginTime,从字面意思理解,该属性是设置动画起始时间点;

3.  Duration 属性,类型为Sytem.Windows.Duration,该属性表示动画的运行周期时长;< DoubleAnimation  From ="20"  To ="100"  Duration ="0:0:5" ></ DoubleAnimation >   这里可以理解为,在5秒内,改变对象属性从20到100.

4.  FillBehavior 属性,类型为Animation.FillBehavior,该属性获取或设置一个值,该值指定动画在运行周期结束后的行为方式,默认值为HoldEnd。简单的说,如果希望动画在运行周期结束时候保留其值,则将FillBehavior 属性设置为HoldEnd。而如果动画的运行周期已结束且FillBehavior 的设置为HoldEnd,则说明动画进入填充周期。如果不希望动画在其活动周期结束时保留其值,则将其FillBehavior 属性设置为Stop(引自MSDN )。

 1  < Canvas >
 2     < Rectangle
 3       x:Name ="MyAnimatedRectangle"
 4      Width ="100"
 5      Height ="100"
 6      Fill ="Blue" >
 7       < Rectangle.Triggers >
 8  
 9         <!--  Animates the rectangle's opacity.  -->
10         < EventTrigger  RoutedEvent ="Rectangle.Loaded" >
11           < BeginStoryboard >
12             < Storyboard >
13               < DoubleAnimation
14                 Storyboard.TargetName ="MyAnimatedRectangle"
15                Storyboard.TargetProperty ="Opacity"
16                From ="1.0"  To ="0"  Duration ="0:0:5"  FillBehavior ="Stop"   />
17             </ Storyboard >
18           </ BeginStoryboard >
19         </ EventTrigger >
20       </ Rectangle.Triggers >
21     </ Rectangle >
22  </ Canvas >

5.  RepeatBehavior 属 性,类型为Animation.RepeatBehavior,动画重复行为,可以简单的理解为动画播放次数,该属性有另外两个属性Count和 Duration。其中Count属性可以指定具体的动画时间线重复值。例如,有一个2秒的动画,如果设置 RepeatBehavior.Count=1.5x(x是倍数的含义,又称迭代),该动画将完整的运行一次,然后在运行一半动画。而Duration属 性是指定该动画运行时长,无论该动画总长度多少。例如,有一个2秒的动画,如果设置RepeatBehavior.Duration="0:0:6",则 该动画将重复3次。

6.  SpeedRatio 属性,类型为Double,该属性用来控制动画速率,默认为1.0.如果设置速率大于1.0,则动画速度会变快,反之,动画速度会变慢。

 

Timeline作为 Silverlight动画基类,为线性插值动画,关键帧动画和StoryBoard提供了基础动画要使用的属性,掌握了基类属性使用,在以后动画设计中 可以达到事半功倍的效果。到这里为止,Silverlight动画设计需要的基础知识已经介绍完毕,下节将结合这些概念,演示Blend如何设计动画效果 的。

如需转载请注明出处:http://www.ok22.org/art_detail.aspx?id=218 【Expression Blend实例中文教程(7) - 动画基础快速入门】
分享到:
评论

相关推荐

    Expression Blend实例中文教程系列

    《Expression Blend实例中文教程系列》是由CSDN社区Silverlight版主jv9精心编写的教程,旨在帮助开发者深入理解和高效使用Expression Blend这一强大的设计工具。教程分为基础篇和实例篇,作者以其丰富的实际开发经验...

    Expression Blend实例中文教程

    《Expression Blend实例中文教程》是一份专为Silverlight开发者准备的详细教程,旨在帮助学习者掌握这款强大的设计工具。教程采用中文讲解,便于国内用户理解并应用到实际项目中。以下将围绕教程中的核心知识点进行...

    Blend4实例中文教程.pdf

    《Expression Blend 4 中文教程》是一份专为学习这款强大的设计工具而准备的详细指导材料。Expression Blend 4 是微软公司开发的一款图形用户界面设计软件,它与Visual Studio配合使用,专注于帮助开发者和设计师...

    Microsoft Expression Blend 4

    Expression Blend 4在设计界面上提供了直观的工具,使得设计师能够快速创建图形、动画以及用户交互效果。 本书《Microsoft Expression Blend 4 Step by Step》是由Elena Kosinska和Chris Leeds合著,并由O’Reilly ...

    blend 3中文帮助文档以及简单的入门blend 教程

    这个压缩包包含了“Blend3.chm”中文帮助文档和“Expression_Blend_简单教程.doc”入门教程,为初学者提供了宝贵的资源。 Blend3 中文帮助文档是学习软件功能和操作的重要参考资料。它涵盖了软件的所有工具、面板...

    Microsoft Expression Blend 4 Step by Step.pdf

    《Microsoft Expression Blend 4 Step by Step》是一本关于Microsoft Expression Blend 4的入门级教程书籍,由Elena Kosinska和Chris Leeds撰写,并由O'Reilly Media, Inc.获得微软公司的授权出版。该书的出版地址...

    Sams - Microsoft Expression Blend Unleashed (SourceCode)

    7. **Chapter 1:入门和工作流**:介绍Blend的基本工作环境、工具栏、面板和快捷键,让初学者快速上手。 8. **Chapter 19:3D和媒体元素**:可能会讲解如何在WPF中集成3D图形和多媒体内容,以提升应用的视觉吸引力...

    Blend4+Design4+Web4+Encoder4(4合1)免费中文版软件下载地址+密匙+教中文教程

    6. 教程资源:随软件提供的“Blend4实例中文教程.pdf”可能包含一系列针对Blend4的实践操作指导,帮助用户快速上手并掌握工具的使用。而“下载地址.txt”文件很可能是提供软件下载链接,方便用户获取安装包。...

    Silverlight 2 教程+实例

    - **Silverlight 2教程中文版 .7z**:这可能是一个完整的中文教程文档,涵盖了Silverlight 2的基础知识、编程模型、UI设计、数据访问和网络通信等多个方面。 - **Silverlight.chm**:CHM是Microsoft的帮助文件格式,...

    Expression Studio手册

    - **Microsoft Expression 学习中心**:提供全面的学习资料、技术文章、教程视频和示例,覆盖了从入门到高级的所有主题。 - **研讨会**:定期举办的多媒互动设计讲座,为设计师提供最新的设计理念和技术分享。 - **...

    ZAM 3D中文 教程

    教程中提到的步骤详细解释了如何使用ZAM 3D创建一个简单的3D文本动画,并将其导出为XAML,最后在Expression Blend中进行整合和预览。 总结来说,ZAM 3D提供了一个高效的工作流,帮助开发者轻松地创建高质量的3D内容...

    红皮书Silverlight1.0教程

    接下来,将深入探讨安装和配置开发环境,包括Visual Studio和Expression Blend等工具,以便读者能够开始构建第一个Silverlight项目。 在基础部分,教程会讲解XAML(Extensible Application Markup Language),这是...

    VB 2010 高清PDF教程

    综上所述,《VB 2010 高清PDF教程》全面覆盖了Visual Basic 2010及其相关技术的核心知识点,不仅适用于初学者快速入门,也适合有一定基础的开发者深入学习和参考。通过本教程的学习,开发者可以掌握Visual Basic ...

    beginning_silverlight_5_in_c_4th_edition

    - **Expression Blend**:详细介绍了微软的界面设计工具——Expression Blend,该工具提供了强大的UI设计功能,包括动画、样式编辑以及与XAML代码的无缝集成。 ### 12. 样式设置 - **Styling in Silverlight**:...

    Programming Windows Phone 7

    本书首先介绍了Windows Phone 7的基本架构和开发环境,包括Visual Studio 2010 Express for Windows Phone、Expression Blend以及Windows Phone Emulator。开发者通过这些工具可以进行高效的代码编写和应用调试。书...

    ASP.NET3.5从入门到精通

    第 7 章数据库与 ADO.NET 基础 7.1 数据库基础 7.1.1 结构化查询语言 7.1.2 表和视图 7.1.3 存储过程和触发器 7.2 使用SQL Server 2005 管理数据库 7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除...

    SilverLight新兵手册.docx

    微软官方提供的CHS_Silverlight_4文档是全面的入门教程,适合有一定基础的技术人员。"HELLO WORLD"项目则鼓励新手动手实践。另外,"万事大吉的IT学习笔记"是一个很好的在线资源,它的STEP BY STEP教程非常适合初学者...

Global site tag (gtag.js) - Google Analytics