我编写了一个函数window.setinterval,后跟两个if条件。在firefox,opera,IE中完全按照我的意愿工作。在webkit引擎中,该功能没有被继续使用。
x = window.setInterval(function() {
if(a.speed >= a.maxSpeed && b.speed >= b.maxSpeed && c.speed >= c.maxSpeed) {
a.stop();
b.stop();
c.stop();
}
if(a.speed === 0 && b.speed === 0 && c.speed === 0 && completed === 3) {
window.clearInterval(x);
enableControl();
printResult();
enableControl();
}
}, 100);
我设置了一个间隔,当达到max.speeds时,应调用stop函数,如果speed为0,则应显示结果。在Mozilla,IE,Opera的工作正如我想要的那样。但是在webkit中,第一个if条件本身没有被执行。无限循环正在运行。
我已经尝试嵌套了,即使这样,第一个if条件也没有被执行。请帮我解决这个问题。
如果这不是正确的apprach,我可以在c.stop()之后触发超时并手动将a,b,c的速度设为0,然后启用控制并显示结果吗?
这是你要求的停止功能。
Slot.prototype.stop = function() {
var _this = this,
limit = 30;
clearInterval(_this.si);
_this.si = window.setInterval(function() {
if(_this.speed > limit) {
_this.speed -= _this.step;
$(_this.el).spSpeed(_this.speed);
}
if(_this.speed <= limit) {
_this.finalPos(_this.el);
$(_this.el).spSpeed(0);
$(_this.el).spStop();
clearInterval(_this.si);
$(_this.el).removeClass('motion');
_this.speed = 0;
}
}, 100);
};