两个小球碰撞之后,被撞的小球运动代码如下,但是在运行中,两个小球碰撞之后程序停止运行,下面的代码有什么问题吗?
public void CollionPMoveStop()
{
CollionP.Name
= "CollionP";
this.RegisterName(CollionP.Name
, CollionP);
Thickness th = CollionP.Margin;
double dx = 0;
double dy = 0;
double Left = CollionP.Margin.Left;
double Top = CollionP.Margin.Top;
double t1 = Math.Abs(xVelocity) / Acceleration;
double t2 = Math.Abs(yVelocity) / Acceleration;
double t;
if (t1 > t2)
t = t1;
else
t = t2;
ThicknessAnimationUsingKeyFrames myThicknessAnimation =
new ThicknessAnimationUsingKeyFrames();
myThicknessAnimation.KeyFrames = new ThicknessKeyFrameCollection();
while (Math.Abs(xVelocity)!=0 || Math.Abs(yVelocity)!=0)
{
if (CollionP.Margin.Left < PhysicsPaper.ActualWidth - 50 && CollionP.Margin.Left>50 && CollionP.Margin.Top>50 && CollionP.Margin.Top<PhysicsPaper.ActualHeight-50)
{
dx += xVelocity * 30 / 1000;
dy += yVelocity * 30 / 1000;
myThicknessAnimation.KeyFrames.Add(new LinearThicknessKeyFrame
(new Thickness(Left + dx, Top+dy, PhysicsPaper.ActualWidth - Left - dx - CollionP.Width, PhysicsPaper.ActualHeight - Top - dy - CollionP.ActualHeight)));
if(xVelocity>0)
xVelocity -= Acceleration * 30 / 1000;
else if (xVelocity < 0)
xVelocity += Acceleration * 30 / 1000;
if (yVelocity > 0)
yVelocity -= Acceleration * 30 / 1000;
else if (yVelocity < 0)
yVelocity += Acceleration * 30 / 1000;
}
else
break;
}
MouseLDown = false;
myThicknessAnimation.Duration = new Duration(TimeSpan.FromSeconds(t));
myStoryboard = new Storyboard();
myStoryboard.Children.Add(myThicknessAnimation);
Storyboard.SetTargetName(myThicknessAnimation, CollionP.Name
);
Storyboard.SetTargetProperty(myThicknessAnimation, new PropertyPath(Ellipse.MarginProperty));
myStoryboard.Begin(this);
}