我在网上看到的许多示例RequestAnimationFrame两次调用该函数:在回调的内部和外部。我了解为什么我们在内部调用它;但是,为什么我们在外面叫它呢?
let myReq;
function step(timestamp) {
myReq = requestAnimationFrame(step); // I understand why we call it here.
console.log(timestamp, myReq)
if(timestamp >= 1000) {
cancelAnimationFrame(myReq);
}
}
myReq = requestAnimationFrame(step); // why invoke rAF here.
答案 0 :(得分:2)
这是在下一个动画帧中对int
的初始调用;它实质上是动画的开始。没有它,您将拥有:
int id = 0;
try {
id = Integer.parseInt(tfID.getText());
} catch (NumberFormatException e1 ) {
if (tfID.getText()==null) //This does not work
idError.setText("Enter an Integer");
else
idError.setText("Intgers only accepted");
}
...在这种情况下,我们永远不会有step
的调用者,并且也不会调用它。
或者,您可以将let myReq;
function step(timestamp) {
myReq = requestAnimationFrame(step);
console.log(timestamp, myReq)
if(timestamp >= 1000) {
cancelAnimationFrame(myReq);
}
}
包装器省略为step
的初始调用:
requestAnimationFrame
但是在第一次调用step
时,它不一定会等待第一个可用的动画帧。