【发布时间】:2011-08-02 02:41:47
【问题描述】:
我是动画新手,但我最近使用setTimeout 创建了一个动画。 FPS 太低,所以我找到了使用requestAnimationFrame 的解决方案,在此link 中进行了描述。
到目前为止,我的代码是:
//shim layer with setTimeout fallback
window.requestAnimFrame = (function(){
return
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback){
window.setTimeout(callback, 1000 / 60);
};
})();
(function animloop(){
//Get metrics
var leftCurveEndX = finalLeft - initialLeft;
var leftCurveEndY = finalTop + finalHeight - initialTop;
var rightCurveEndX = finalLeft + finalWidth - initialLeft - initialWidth;
var rightCurveEndY = leftCurveEndY;
chopElement(0, 0, 0, 0, leftCurveEndX, leftCurveEndY, rightCurveEndX, rightCurveEndY);//Creates a new frame
requestAnimFrame(animloop);
})();
这会在第一帧停止。我在chopElement函数中有一个回调函数requestAnimFrame(animloop);。
另外,是否有更详尽的使用此 API 的指南?
【问题讨论】:
-
作为一般规则,在 JS 中使用 return 时要非常小心,如果在 return 之后删除换行符,这将起作用。
标签: javascript animation requestanimationframe