Windows Phone 7 Animation动画编程

Silverlight动画概述
http://msdn.microsoft.com/zh-cn/library/cc189019(v=VS.95).aspx

类的继承关系

Object
    DependencyObject (abstract)
         Timeline (abstract)
              DoubleAnimation
              DoubleAnimationUsingKeyFrames
              ColorAnimation
              ColorAnimationUsingKeyFrames
              PointAnimation
              PointAnimationUsingKeyFrames
              ObjectAnimationUsingKeyFrames

Storyboard 类介绍

通过时间线控制动画,并为其子动画提供对象和属性目标信息。
System.Windows.Media.Animation
 XAML 
 <Storyboard ...>
  oneOrMoreChildTimelines
</Storyboard>

XAML 值
oneOrMoreChildTimelines
从 Timeline 派生的类的一个或多个对象元素。这可以是另一个 Storyboard,也可以是许多动画类型中的任意一种。

 可以将 Storyboard 作为其他动画对象(例如 DoubleAnimation)以及其他 Storyboard 对象的容器。可以使用 Storyboard 对象的交互式方法来启动、暂停、继续和停止动画。可以使用 Begin、Stop、Pause 和 Resume 方法来控制演示图板(动画)的播放。

例子点击按钮按钮会旋转一圈 

<Button Content="会旋转的按钮"
Grid.Row
="0"
HorizontalAlignment
="Center"
VerticalAlignment
="Center"
RenderTransformOrigin
="0.5 0.5"
Click
="OnButtonClick">
<Button.RenderTransform>
<RotateTransform />
</Button.RenderTransform>
</Button>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace ClickAndSpin
{
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}

void OnButtonClick(object sender, RoutedEventArgs args)
{
Button btn
= sender as Button;
RotateTransform rotateTransform
= btn.RenderTransform as RotateTransform;

// 创建和定义 animation
DoubleAnimation anima = new DoubleAnimation();
anima.From
= 0;//开始的值
anima.To = 360;//结束的值
anima.Duration = new Duration(TimeSpan.FromSeconds(0.5));//持续的时间

// 设置Storyboard的属性
Storyboard.SetTarget(anima, rotateTransform);
Storyboard.SetTargetProperty(anima,
new PropertyPath(RotateTransform.AngleProperty));

// 创建 storyboard, 并且添加上 animation, 然后动画开始!
Storyboard storyboard = new Storyboard();
storyboard.Children.Add(anima);
storyboard.Begin();
}
}
}

备注:

Storyboard.SetTarget(timeline ,target) 方法
Silverlight 导致指定的 Timeline 以指定对象为目标。

timeline
类型:System.Windows.Media.Animation.Timeline
以指定的依赖项对象为目标的时间线。
target
类型:System.Windows.DependencyObject
要作为目标的对象的实际实例。
 

Storyboard.SetTargetProperty(element ,path) 方法
Silverlight 使指定的 Timeline 以指定的依赖项属性为目标。

element
类型:System.Windows.Media.Animation.Timeline
要将指定的依赖项属性与之关联的时间线。
path
类型:System.Windows.PropertyPath
说明要进行动画处理的依赖项属性的路径。

posted on 2011-02-23 20:48  linzheng  阅读(4236)  评论(0编辑  收藏  举报

导航