Storyboard是用来干吗的?
MSDN的解释是:通过时间线控制动画,并为其子动画提供对象和属性目标信息。它究竟是个什么样的类?有什么作用?代码示例: 
private void LayoutRoot_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
            //获取点击处相对于容器的坐标位置
            Point p = e.GetPosition(LayoutRoot);
            //创建移动用的动画故事板
            Storyboard storyboard = new Storyboard();
            //创建X轴方向动画
            //创建有起点、终点及总耗时的动画处理类
            DoubleAnimation xAnimation = new DoubleAnimation() {
                //起点
                From = Canvas.GetLeft(rectangle),
                //终点
                To = p.X,
                //花费时间
                Duration = new Duration(TimeSpan.FromMilliseconds(500)),
            };
            //将X轴方向动画赋予rectangle
            Storyboard.SetTarget(xAnimation, rectangle);//xAnimation动画过程绑定到矩形对象rectangle
            //设置X轴方向动画所影响的对象属性为Canvas.Left
            Storyboard.SetTargetProperty(xAnimation, new PropertyPath("(Canvas.Left)"));//xAnimation动画它影响的是对象(rectangle)的Canvas.Left属性。问题:在这里“Storyboard”改为它的实例“storyboard”行吗?

            //将X轴方向动画添加进动画故事板中
            storyboard.Children.Add(xAnimation);
            //创建Y轴方向动画  
            DoubleAnimation yAnimation = new DoubleAnimation() {
                From = Canvas.GetTop(rectangle),
                To = p.Y,
                Duration = new Duration(TimeSpan.FromMilliseconds(500)),
            };
            Storyboard.SetTarget(yAnimation, rectangle);
            //设置Y轴方向动画所影响的对象属性为Canvas.Top
            Storyboard.SetTargetProperty(yAnimation, new PropertyPath("(Canvas.Top)"));
            storyboard.Children.Add(yAnimation);
            //播放动画
            storyboard.Begin();
问题:为什么“DoubleAnimation”的实例可以加入“storyboard”,而且“storyboard”控制动画的播放,DoubleAnimation类不能控制吗?
        }

解决方案 »

  1.   

    Storyboard 可以看作用来装载动画规则的容器
    Storyboard 类提供 TargetName 和 TargetProperty 附加属性。通过在动画上设置这些属性,将告诉动画对哪些内容进行动画处理
    在silverlight中可以创建一下几种动画
      

  2.   


    小弟这样理解对吗?
    DoubleAnimation定义处理动画过程,而动画的对象是“rectangle”,Stroyboard类将二者整合到一起,形成动画。但是,小弟还是有点不明白:
     Storyboard.SetTarget(xAnimation, rectangle);//xAnimation动画过程绑定到矩形对象rectangle
    //设置X轴方向动画所影响的对象属性为Canvas.Left
    Storyboard.SetTargetProperty(xAnimation, new PropertyPath("(Canvas.Left)"));//xAnimation动画它影响的是对象(rectangle)的Canvas.Left属性。问题:在这里“Storyboard”改为它的实例“storyboard”行吗?请如梦哥多多直接?
      

  3.   

    看看Blend的那个漂亮的时间线定义窗口就能明白了,大多数动画设计软件都使用这个直观的工具。