Ita*_*dev 1 html javascript methods dynamic setinterval
setInterval(this.Animate(), this.speed);
Run Code Online (Sandbox Code Playgroud)
预计每隔这个时间运行一次.是的,但浏览器只运行一次.可能的原因是什么?
如果Animate是原型的派生函数,则必须使用:
setInterval(this.Animate.bind(this), this.speed);
Run Code Online (Sandbox Code Playgroud)
尝试在没有括号的情况下运行你的函数,当你放括号时它总是调用函数而不是传递它,这就是你想要的:
setInterval(this.Animate, this.speed);
Run Code Online (Sandbox Code Playgroud)
如果它仍然不起作用,你应该调试并找出'this'的范围是什么,因为'this'可能会改变.您可以通过在浏览器的JS调试器中添加断点来实现.此外,您可以尝试这样做以避免'apply'的范围问题
var animate = this.animate.apply(this)
setInterval(animate, this.speed);
Run Code Online (Sandbox Code Playgroud)
ps:为动画避免使用setInterval可能是一个不错的选择,因为它们可能会排队然后立即触发.而是在函数末尾(this.Animate)一次又一次地调用setTimedout,以创建一个循环.
请执行下列操作:
setInterval(this.Animate, this.speed);
Run Code Online (Sandbox Code Playgroud)
您正在执行该函数,而不是指定要以特定间隔执行的函数的引用...
| 归档时间: |
|
| 查看次数: |
1851 次 |
| 最近记录: |