数码资讯
浅谈Javascript中匀速运动的停止条件
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
让我们先看看匀速运动的代码,然后再修改速度后出现的错误。
复制代码代码如下所示:
{ # 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,一步一步也不成问题了。
复制代码代码如下所示:
{ # 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,一步一步也不成问题了。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。