private void ExecuteMove(DDLCMoveAction action) { _animater = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(10) }; var originX = (double)action.Object.GetValue(Canvas.LeftProperty); var originY = (double)action.Object.GetValue(Canvas.TopProperty); var speedX = action.Position.X / 100 / action.Speed; var speedY = action.Position.Y / 100 / action.Speed; var count = 0; _animater.Tick += (x, y) => { if (count++ > action.Speed * 100 - 1) { Monika.SetValue(Canvas.LeftProperty, originX + action.Position.X); Monika.SetValue(Canvas.TopProperty, originY + action.Position.Y); _actionIndex++; _animater.Stop(); return; } action.Object.SetValue(Canvas.LeftProperty, (double)action.Object.GetValue(Canvas.LeftProperty) + speedX); action.Object.SetValue(Canvas.TopProperty, (double)action.Object.GetValue(Canvas.TopProperty) + speedY); }; _animater.Start(); }
private void MonikaMove() { MonikaMover.Interval = new TimeSpan(0, 0, 0, 0, 2); MonikaMover.Tick += (sender, arg) => Monika.SetValue(Canvas.LeftProperty, (double)(Monika.GetValue(Canvas.LeftProperty)) - 1); MonikaMover.Start(); }