WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(一)让物体动起来①

 2009-06-22 08:33:02 来源:WEB开发网   
核心提示: 这里我创建了一个50*50象素,圆角5*5红色的方块对象,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(一)让物体动起来①(3),并且将它作为子控件添加进Carrier中,并且初始化它在Carrier中的位置: Canvas.SetLeft(rec

这里我创建了一个50*50象素,圆角5*5红色的方块对象,并且将它作为子控件添加进Carrier中,并且初始化它在Carrier中的位置: Canvas.SetLeft(rect, 0); Canvas.SetTop(rect, 0);

对象准备好了,那么接下来就是实现动画了。我们要实现的是鼠标点哪它就移动到哪:

         private void Carrier_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
            //创建移动动画
            Point p = e.GetPosition(Carrier);
            Storyboard storyboard = new Storyboard();
            //创建X轴方向动画
            DoubleAnimation doubleAnimation = new DoubleAnimation(
              Canvas.GetLeft(rect),
              p.X,
              new Duration(TimeSpan.FromMilliseconds(500))
            );
            Storyboard.SetTarget(doubleAnimation, rect);
            Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Left)"));
            storyboard.Children.Add(doubleAnimation);
            //创建Y轴方向动画
            doubleAnimation = new DoubleAnimation(
              Canvas.GetTop(rect),
              p.Y,
              new Duration(TimeSpan.FromMilliseconds(500))
            );
            Storyboard.SetTarget(doubleAnimation, rect);
            Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));
            storyboard.Children.Add(doubleAnimation);
            //将动画动态加载进资源内
            if (!Resources.Contains("rectAnimation")) {
                Resources.Add("rectAnimation", storyboard);
            }
            //动画播放
            storyboard.Begin();
        }

从上面代码我们可以看到,首先获取鼠标点击点相对于Carrier中的坐标位置p,然后创建故事板storyboard和Double类型动画doubleAnimation,doubleAnimation有3个参数,分别代表开始值,结束值,动画经历时间,接着通过Storyboard.SetTarget()和Storyboard.SetTargetProperty()分别设置动画的目标及要修改的动画目标属性,再下来将doubleAnimation添加进storyboard中,这样重复两次分别实现X轴和Y轴方向的动画。当这些处理完后,最后还需要将storyboard添加进Resources资源内,这样程序才能识别。一切就绪后,通过代码storyboard.Begin()来开始动画。

大家按Ctrl+F5,然后在窗体上随便点点,方块是不是会移动了呢?呵呵。

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(一)让物体动起来①

小结:Storyboard动画是基于时间线的矢量动画,它与传统的基于图片轮换形成的动画不同,它的原理是通过时时的改变对象属性而形成的,第一次接触的朋友们可能会觉得比较吃力,但是慢慢体会一下,多练习一下就会渐渐的理解了。

下一节我将继续讲解动态创建动画的第二种方法,敬请关注。

上一页  1 2 3 

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接