Windows Phone开发(36):动画之DoubleAnimation
创始人
2024-09-11 21:31:10
0

从本节开始,我们将围绕一个有趣的话题展开讨论——动画。

看到动画一词,你一定想到Flash,毕竟WP应用的一个很重要的框架是Silverlight,在WP中也发挥了Silverlight的许多优 点,可能不少人说,Silverlight就是和Flash差不多吧,当你深入了解了Silverlight后,你会发现,其实不 然,Silverlight更偏重于数据处和企业级应用。

好了,F话不多说,开始吹我们今天的牛皮吧,在吹牛皮之前,我们更应该知道牛皮是从哪里来的。故在说动画之前,先想一下,什么是 Storyboard?这个东东你觉得怎么翻译好呢,叫演示图板吧,MSDN是这样翻译的,我说一个直观一点的概念吧,不知道各位玩过Flash 没,Flash里面有一个“帧面板”,是的,其实这个演示图板和帧面板有着很严重的相似之处。

这样吧,我们还是接受一下.NET非常强大的事实吧,所以,打开Express Blend来看看一个图形化的演示图板,这样一来,大家一定会更好理解。

这样一看,一定很形象了,Storyboard从TimeLine派生而来,时间线在动画里面是比较关键的,我们都知道,所谓动画会“动”,正是因为它存在一个时间差,“帧”的概念相信大家能理解,只可意会不可言传啊,看你跟她能有多少默契了。

一个Storyboard可以包含N多个子动画时间线,今天我们先来了解一个比较简单的,DoubleAnimation是在一定时间段内对两个double值进行动画处理,如可视化元素的宽度,高度,透明度等。

严重警告:不是所有的属性都能够进行动画处理的,要进行动画处理的属性必须是依赖项属性。

好了,理论说多了,很容易让人走火入魔,还是动手干一下好吧。

下面我们来做一个演练。

第一步,新建一个WP应用程序项目,此处省略35个字。

第二步,在页面中添加一个矩形,两个按钮,矩形是“小白鼠”,是用来给我们做动画实验的,至于那两个按钮,一个是播放动画,一个是停止动画。界面怎么布置,随你喜欢。

  1.    
  2.    
  3.        
  4.            
  5.            
  6.        
  7.     
  8.                Grid.Row="0"   
  9.                Margin="100"   
  10.                Fill="Yellow"/>   
  11.        
  12.            
  13.            
  14.        
  15.   

第三步,在上面那个叫ContentPanel的Grid中加一个Storyboard,作为资源,并在其中声明一个DoubleAnimation,把矩形的透明度在5秒钟内变为0,即使矩形产生淡出的动画效果。

Storyboard.TargetName附加属性指定要进行动画处理的对象的名字,你想干掉谁,就写上它的名字 吧;Storyboard.TargetProperty是要动画处理的属性,由于我们要对透明度进行动画过度,故这里用Opacity属性。 Duration就是动画的时长,这里取5秒钟。

  1.    
  2.        
  3.         
  4.             Duration="0:0:5"   
  5.             Storyboard.TargetName="rec"   
  6.             Storyboard.TargetProperty="Opacity"   
  7.             To="0"/>   
  8.        
  9.  

第四步,分别处理两个按钮的单击事件,调用Storyboard的Begin和Stop方法来控件动画的播放和停止。

  1. private void play_Click(object sender, RoutedEventArgs e)   
  2. {   
  3.     this.std.Begin();   
  4. }   
  5. private void stop_Click(object sender, RoutedEventArgs e)   
  6. {   
  7.     this.std.Stop();   
  8. }   

好,现在运行一下看看。

不够爽吗?再做一个吧,把一个椭圆的宽度在3秒钟内从20变为420,如何。

看XAML代码。

  1.        
  2.            
  3.                
  4.                
  5.            
  6.            
  7.            
  8.                
  9.                
  10.            
  11.            
  12.                
  13.                 
  14.                                  Storyboard.TargetName="ell"   
  15. Storyboard.TargetProperty="Width"   
  16.                                  From="20"   
  17.                                  To="420"/>   
  18.                
  19.            
  20.        

后台代码:

  1. private void onPlay(object sender, RoutedEventArgs e)   
  2. {   
  3.     this.std.Begin();   
  4. }   
  5. private void onStop(object sender, RoutedEventArgs e)   
  6. {   
  7.     this.std.Stop();   
  8. }   

看看运行效果。

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...