我想知道是否有任何使用计时器动画标签的解决方案?我希望label2慢慢地向左移动,直到击中label1并且当它被击中时,从已经开始向左的位置向后移动。 我试过这个,但是什么时候击中label1就停止了:
label2.Location = new Point(label2.Location.X - 4, label2.Location.Y);
if (label2.Location.X == label1.Location.Y)
{
label2.Location = new Point(label2.Location.X + 4, label2.Location.Y);
}
答案 0 :(得分:3)
您正在比较label2.Location.X == label1.Location.Y
,这似乎是一个错字。
你需要一个方向变量,你需要存储Label2的原始位置,以便它知道去哪里:
label2.Location = new Point(label2.Location.X + step, label2.Location.Y);
if (label2.Location.X <= label1.Location.X) {
step = 4;
} else if (label2.Location.X >= originalX) {
step = -4;
}
设置变量:
int step = -4;
int originalX;
然后使用Load覆盖方法设置originalX值:
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
originalX = label2.Location.X;
}
答案 1 :(得分:1)
我认为你总是离开。你不应该使用变量来跟踪你想要移动的方向。
从这个意义上说,你需要检查你何时到达正确的边缘以便再次改变方向。