【发布时间】:2011-11-03 11:39:52
【问题描述】:
我正在使用 setTimeout 在 Javascript 中创建动画,但它似乎不起作用。只执行动画的第一个动作,没有后续动作。
我在两台不同的笔记本电脑上使用 Firefox 进行了尝试,一台没有抛出任何错误,但一台显示 self.animateCallback is not a function。当我尝试不同的方式时,我还看到其他错误,例如说我的超时功能没用或“编译并运行”。似乎无法正常工作。我试过"function(self){self.animateCallback()}" 和"self.animateCallback"(带引号和不带引号)。
代码如下,它是原型方法的一部分。
increment : function(incr, target, tick) {
var self = this;
self.animateCallback = function()
{
var done = Math.abs(self.currValue - target) < Math.abs(incr);
if(!self.animateCallback || done) {
if(done) {
self.updateAngle(self.currValue/self.maxValue);
self.stopAnimation(); //just setting animateCallback to null
}
}
else
{
self.updateAngle((self.currValue+incr)/self.maxValue);
setTimeout(self.animateCallback, tick);
}
}
self.animateCallback.call();
},
【问题讨论】:
-
我们需要查看更多代码才能知道问题所在。显然,self 或 self.animateCallback 有问题,因为如果其中一个没有被弄乱,代码不应该有你报告的问题。
标签: javascript settimeout