让我们先看看匀速运动的代码,然后再修改速度后出现的错误。

复制代码代码如下所示:



{ # DIV1

宽度:100px;

身高:100px;

位置:绝对;

背景:红色;

上图:50px;

左:600px;

}

{ #格式

宽度:1px;

身高:300px;

位置:绝对;

左:300px;

顶部:0;

背景:黑色;

}

{ # div3

宽度:1px;

身高:300px;

位置:绝对;

左:100px;

顶部:0;

背景:黑色;

}





var时间=空;

功能startmove(指标){

无功odiv = document.getelementbyid(联赛);

ClearInterval(时间);

时间= setInterval(){()函数(

var速度= 0;

如果(odiv.offsetleft < ITarget){

速度= 7;

{人}

速度= 7;

}

事实上,这种情况是个问题。

odiv.style.left = odiv.offsetleft +速度+ 'px;



},30)

}



























事实上,如果这样的代码被转换为7个奇数,它将是一个到达目标点的整数,这样就会出现一个不能到达目标点或超过目标点的错误。



那么为什么会发生这种情况呢

事实上,当他到达目标点时,他无法准确地到达目标点。如果目标点一次有100次和7次,他要么通过目标要么失败。

永远不要到达目标点。事实上,在帮助之前缓冲区有点像。

那么怎样才能到达目标呢

例如:如果你打的到某个地方,司机必须停在10米和20米以外,即使是,也不可能让车停在那个地方。

所以事实上,程序是一样的。只要物体和目标点之间的距离接近一定程度,我们就不必再靠近了。

让我们看看修改过的代码:

复制代码代码如下所示:



var时间=空;

功能startmove(指标){

无功odiv = document.getelementbyid(联赛);

ClearInterval(时间);

时间= setInterval(){()函数(

var速度= 0;

如果(odiv.offsetleft < ITarget){

速度= 7;

{人}

速度= 7;

}

如果(Math.abs(指标- odiv。offsetleft)<= 7){

ClearInterval(时间);

ODiv。风格。左=指标+ 'px;

{人}

odiv.style.left = odiv.offsetleft +速度+ 'px;

}



},30)

}





解释:我们为什么要使用math.abs取绝对值吗

原因很简单,因为速度可能是正的,也可能是负的。

现在我们让物体和物体之间的距离小于7,这就是全部。为什么是7因为他的下一个动作不到7,这时,我们甚至说到了要点。

现在问题又来了,让他不停地在靶点。所以我们添加一个简单的句子让左等于目标点。odiv。风格。左=指标+ 'px;

其实最后一次走路不到7,但大家都知道程序运行得太快,眼睛看不见。

这个时候没问题,眨眼

这是匀速运动的停止条件,这时一个朋友问,为什么缓冲运动没有那么麻烦

因为他的速度在变,变得越来越小,直到最后他达到了1,一步一步也不成问题了。