Javascript 为什么我的间歇时间只有一半?
我一直在做我的第一个主要编程项目,到目前为止进展得相当顺利。我的目标是运行动画,直到触发事件或15秒过去。动画超时后,我希望动画重复。我目前对该计划的解决方案如下所示Javascript 为什么我的间歇时间只有一半?,javascript,animation,settimeout,setinterval,clearinterval,Javascript,Animation,Settimeout,Setinterval,Clearinterval,我一直在做我的第一个主要编程项目,到目前为止进展得相当顺利。我的目标是运行动画,直到触发事件或15秒过去。动画超时后,我希望动画重复。我目前对该计划的解决方案如下所示 var animationSpeed = 40; var animationTimout = 375; var testTime = 1; //some more set up variables function onClick() { startDrive();
var animationSpeed = 40;
var animationTimout = 375;
var testTime = 1;
//some more set up variables
function onClick() {
startDrive();
setTimeout(startDrive, 15000); //****
}
function startDrive() {
var Driving = setInterval(carDriving, aniSpeed);
}
function carDriving() {
testLocation();
drawCar();
angleCalc();
newLocation();
getInfo();
}
function testLocation() {
//this code gets information on whether or not the animation should be stopped
testTime = testTime + 1
if(a === 1 || testTime > animationTimeout) {
//a test to cancel the animation, the other variables test to
clearInterval(Driving);
}
}
function drawCar() {
//draws the car
}
function angleCalc() {
//gets some info on how to move the car
}
function newLocation() {
//decides on new coords for the car based on angleCalc();
}
function getInfo() {
//gets some info I plan to use later in the project
}
当我在没有星号的情况下运行代码时,整个过程都正常工作。这辆车按照我的要求进行动画设计,如果满足停车条件,它就会停车。汽车停在画布上的地方,似乎间隔时间已经过去了。当我添加带星号的代码行时,动画似乎可以工作,但运行速度是以前的两倍。我完全迷路了,我尝试的东西都不管用。请提供帮助。问题可能是由于此处定义的局部变量引起的:
function startDrive() {
var Driving = setInterval(carDriving, aniSpeed);
}
变量Driving
仅在函数startDrive
中定义,它是一个局部变量,因为您使用var
在函数内部定义它。因此,当您试图在testLocation()
中访问它时,您并不是在访问同一个变量。事实上,当您执行clearInterval(Driving)
时,变量Driving
没有定义。一个简单的解决方案是通过删除var
,使驱动成为全局的:
function startDrive() {
Driving = setInterval(carDriving, aniSpeed);
}
也可以将计时器作为参数传递到testLocation
函数中。这样,您将正确地清除间隔