Windows Phone开发(40):漫谈关键帧动画之中篇
原文:Windows Phone开发(40):漫谈关键帧动画之中篇
一、DiscreteDoubleKeyFrame
离散型关键帧动画,重点,我们理解一下“离散”的意思,其实你查一下《新华字典》,“离”和“散”的意思相近。我们可以这样解释:每个关键帧之间是直接过渡,其间不经过动画插补。似乎这样理解有点苦涩难懂,所以,我们还是从实例入手。
请参考以下XAML代码写一个示例:
<Grid Loaded="OnGridLoaded">
<Rectangle Width="100" Height="100" Fill="Green" VerticalAlignment="Top">
<Rectangle.RenderTransform>
<TranslateTransform x:Name="trm"/>
</Rectangle.RenderTransform>
</Rectangle>
<Grid.Resources>
<Storyboard x:Name="std">
<DoubleAnimationUsingKeyFrames Duration="0:0:5" RepeatBehavior="15"
Storyboard.TargetName="trm"
Storyboard.TargetProperty="Y">
<DiscreteDoubleKeyFrame KeyTime="0:0:2" Value="150"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:3" Value="280"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:5" Value="380"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Grid.Resources>
</Grid>
在后台的C#代码中,千万不要记了启动动画,等下运行后发现动不了就麻烦了。
private void OnGridLoaded(object sender, RoutedEventArgs e)
{
this.std.Begin();
}
然后你可以运行了,注意认真观察动画的演变过程。
不知道你观察到了什么?你是否发现,矩形向下运动的过程是直接跳跃式的,每个关键之间没有创建过渡效果,而且直接跳到对应值。
二、DiscreteColorKeyFrame
这也是一个离散型关键帧动画,从名字上我们知道,它是针对颜色进行动画处理的。还是看例子吧。
请参考下面XAML代码写一个测试程序:
<Grid Loaded="OnGridLoaded">
<Ellipse Width="250" Height="250">
<Ellipse.Fill>
<SolidColorBrush x:Name="brush" Color="Blue"/>
</Ellipse.Fill>
</Ellipse>
<Grid.Resources>
<Storyboard x:Name="std">
<ColorAnimationUsingKeyFrames Duration="0:0:8"
RepeatBehavior="20"
Storyboard.TargetName="brush"
Storyboard.TargetProperty="Color">
<DiscreteColorKeyFrame KeyTime="0:0:2" Value="Yellow"/>
<DiscreteColorKeyFrame KeyTime="0:0:5" Value="Gray"/>
<DiscreteColorKeyFrame KeyTime="0:0:7" Value="Red"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</Grid.Resources>
</Grid>
后台代码就不帖了,都懂得写什么了。
然后运行一下,查看效果。
从效果中可以看到,颜色的改变是没有平滑的过渡效果的,而是当时间线的播放时间到了关键帧所在的位置时,颜色是直接改变的。
三、LinearColorKeyFrame
线性颜色的关键帧与离散型动画相反,每个关键帧之间都创建平滑的过渡效果,让人看起来有连续感。
请参考以下XAML代码写一个测试程序。
<Grid Loaded="onGridLoaded">
<Ellipse Width="300" Height="300" >
<Ellipse.Fill>
<RadialGradientBrush x:Name="rdGradientBrush" Center="0.5, 0.5"
RadiusX="0.5" RadiusY="0.5">
<GradientStop Color="LightGreen" Offset="0"/>
<GradientStop Color="DarkGreen" Offset="1"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Grid.Resources>
<Storyboard x:Name="std">
<ColorAnimationUsingKeyFrames Duration="0:0:6"
RepeatBehavior="Forever"
Storyboard.TargetName="rdGradientBrush"
Storyboard.TargetProperty="(RadialGradientBrush.GradientStops)[0].(GradientStop.Color)">
<LinearColorKeyFrame KeyTime="0:0:1" Value="Orange"/>
<LinearColorKeyFrame KeyTime="0:0:3" Value="White"/>
<LinearColorKeyFrame KeyTime="0:0:6" Value="Pink"/>
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Duration="0:0:6"
RepeatBehavior="Forever"
Storyboard.TargetName="rdGradientBrush"
Storyboard.TargetProperty="(RadialGradientBrush.GradientStops)[1].(GradientStop.Color)">
<LinearColorKeyFrame KeyTime="0:0:3" Value="Yellow"/>
<LinearColorKeyFrame KeyTime="0:0:6" Value="Violet"/>
<LinearColorKeyFrame KeyTime="0:0:7" Value="SeaGreen"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</Grid.Resources>
</Grid>
页面上的正圆是使用径向渐变填充的,渐变颜色点有两个,我们分别对这两个渐变点的颜色进行线性动画处理,这样就会做出很漂亮的效果,如下面图片所示。
Windows Phone开发(40):漫谈关键帧动画之中篇的更多相关文章
- Windows Phone开发(41):漫谈关键帧动画之下篇
原文:Windows Phone开发(41):漫谈关键帧动画之下篇 也许大家已经发现,其实不管什么类型的动画,使用方法基本是一样的,不知道大家总结出规律了没有?当你找到规律之后,你会发现真的可以举一反 ...
- Windows Phone开发(39):漫谈关键帧动画上篇
原文:Windows Phone开发(39):漫谈关键帧动画上篇 尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅 ...
- Windows Phone开发(42):缓动动画
原文:Windows Phone开发(42):缓动动画 前面在讨论关键帧动画的时候,我有意把几个带缓动动画的关键帧动画忽略掉,如EasingColorKeyFrame.EasingDoubleKeyF ...
- iOS开发UI篇—核心动画(关键帧动画)
转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...
- Windows Store App 关键帧动画
关键帧动画和插值动画类似,同样可以根据目标属性值的变化产生相应的动画效果,不同的是,插值动画是在两个属性值之间进行渐变,而关键帧动画打破了仅通过两个属性值控制动画的局限性,它可以在任意多个属性值之间进 ...
- 背水一战 Windows 10 (14) - 动画: 线性动画, 关键帧动画
[源码下载] 背水一战 Windows 10 (14) - 动画: 线性动画, 关键帧动画 作者:webabcd 介绍背水一战 Windows 10 之 动画 线性动画 - ColorAnimatio ...
- Windows Phone开发(38):动画之PointAnimation
原文:Windows Phone开发(38):动画之PointAnimation PointAnimation也是很简单的,与前面说到的两个Animation是差不多的,属性也是一样的,如By.Fro ...
- Windows Phone开发(37):动画之ColorAnimation
原文:Windows Phone开发(37):动画之ColorAnimation 上一节中我们讨论了用double值进行动画处理,我们知道动画是有很多种的,今天,我向大家继续介绍一个动画类--Colo ...
- Windows Phone开发(36):动画之DoubleAnimation
原文:Windows Phone开发(36):动画之DoubleAnimation 从本节开始,我们将围绕一个有趣的话题展开讨论--动画. 看到动画一词,你一定想到Flash,毕竟WP应用的一个很重要 ...
随机推荐
- 利用iframe技巧获取訪问者qq
今天工作时,有个暂时加的好友问我,怎么利用web页面获取訪问者的qq. 曾经没有接触过,感觉到非常好奇,可是工作中脑子非常亢奋,转的快,利用所学的知识迅速想到一条技巧,那就是假想用户在进入我们设定的页 ...
- 使用wireshark常用的过滤命令
使用wireshark常用的过滤命令 方法/步骤 过滤源ip.目的ip.在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==19 ...
- Hibernate获取Connection
package com.trendcom.base.util; import java.sql.Connection; import java.sql.SQLException; import jav ...
- android之LruCache源代码解析
移动设备开发中,因为移动设备(手机等)的内存有限,所以使用有效的缓存技术是必要的.android提供来一个缓存工具类LruCache,开发中我们会经经常使用到,以下来他是怎样实现的. 在package ...
- Linux Socket编程注意事项
Socket API 是网络应用程序开发中实际应用的标准 API.虽然该 API 简单.可是开发新手可能会经历一些常见的问题.本文识别一些最常见的隐患并向您显示怎样避免它们. 隐患 1.忽略返回状态 ...
- 一则简单演示样例看Oracle的“无私”健壮性
Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...
- Jobbox.io(职位盒子): 新兴的面向技术人才的职场招聘众推平台
人才招聘市场一个主要问题在于猎头中介费昂贵.这对于大公司而言,或可接受. 但对于海量小微企业而言招聘成本和效率之间的平衡是非常大的一个问题. 现在产品猎场(Product Hunt)上出现了一些新的招 ...
- 浅谈spring——spring MVC(十一)
springMVC框架主要是围绕DispatcherServlet这个核心展开,它负责拦截请求并将其分派给相应的的处理器处理,然后将结果响应给用户.包括注解驱动控制器.请求及响应信息处理.视图解析.本 ...
- ON、WHERE、HAVING的差别
ON .WHERE.HAVING都能通过限制条件筛选数据,但他们的使用及其不同.以下我们来分析三者之间的差别. 1. ON 和WHERE 全部的查询都回产生一个中间暂时报表,查询结果就是从 ...
- POJ 2151 Check the difficulty of problems (动态规划-可能DP)
Check the difficulty of problems Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4522 ...