技术开发 频道

开发Silverlight游戏教程:让物体动起来

     【IT168技术文档】第三种方法,DispatcherTimer动画,该类型动画与CompositionTarget动画类似,是基于界面线程的逐帧动画,但他与CompositionTarget动画不同,DispatcherTimer动画可以轻松的进行参数设置:

    xaml界面代码仍然沿用第一节的,那么接下来我们在后台代码中创建相关对象:

Rectangle rect; //创建一个方块作为演示对象

double speed = 5; //设置移动速度

Point moveTo; //设置移动目标

public Window3() {

InitializeComponent();

rect = new Rectangle();

rect.Fill = new SolidColorBrush(Colors.Red);

rect.Width = 50;

rect.Height = 50;

rect.RadiusX = 5;

rect.RadiusY = 5;

Carrier.Children.Add(rect);

Canvas.SetLeft(rect, 0);

Canvas.SetTop(rect, 0);

//定义线程

DispatcherTimer dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal);

dispatcherTimer.Tick += new EventHandler(Timer_Tick);

dispatcherTimer.Interval = TimeSpan.FromMilliseconds(50); //重复间隔

dispatcherTimer.Start();

}


private void Carrier_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {

moveTo = e.GetPosition(Carrier);

}


private void Timer_Tick(object sender, EventArgs e) {

double rect_X = Canvas.GetLeft(rect);

double rect_Y = Canvas.GetTop(rect);

Canvas.SetLeft(rect, rect_X + (rect_X < moveTo.X ? speed : -speed));

Canvas.SetTop(rect, rect_Y + (rect_Y < moveTo.Y ? speed : -speed));

}

   原文地址:http://www.cnblogs.com/alamiye010/archive/2009/06/17/1505331.html

0
相关文章