【问题标题】:Canvas - Increase animation speed without jolts画布 - 提高动画速度而不会颠簸
【发布时间】:2015-02-01 17:22:09
【问题描述】:

如何提高画布动画的速度并仍然获得平滑移动的对象?

在我的示例中,一个男孩正在从画布的顶部移动到底部。运动似乎摇晃起来,y 步越大。我怎样才能避免颠簸并仍然快速移动到底部?

Fiddle

window.requestAnimFrame = (function() {
    return window.requestAnimationFrame ||
        window.webkitRequestAnimationFrame ||
        window.mozRequestAnimationFrame ||
        function(callback) {
            window.setTimeout(callback, 1000 / 60);
        };
})();

(function animloop() {
    requestAnimFrame(animloop);
    redraw();
})();


function redraw() {

    ctx.clearRect(0, 0, canvasWidth, canvasHeight);
    ctx.beginPath();
    ctx.rect(20, y, 90, 90);
    ctx.fillStyle = "red";
    ctx.fill();
    y += 5;

}

【问题讨论】:

标签: javascript html animation canvas


【解决方案1】:

您可以通过减少每帧行进的距离并提高帧速率来提高画布动画的速度,并且仍然可以获得平滑移动的对象。

RequestAnimationFrame 是一种在给定硬件的情况下以合理的帧速率进行动画制作的高效方式,但它会修复帧速率。

您可以使用 setInterval 或 setTimeout 来更好地控制帧速率,它接受第二个整数参数,用于确定距离下一个回调的毫秒数(即帧速率)。

setInterval(function () {
  redraw();
}, 2);

http://jsfiddle.net/uq14c6bu/2/

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2011-09-20
    • 2017-12-25
    • 2017-01-12
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多