在调用cancelAnimationFrame之后,requestAnimationFrame似乎更新了变量

时间:2019-03-12 00:34:00

标签: javascript requestanimationframe

我正在尝试使用MapBoxGL为摄影机旋转设置动画,同时提供选项以暂停旋转并使用复选框回调重新启动旋转。 “暂停” /“停止”旋转效果很好,但是“重新启动”似乎可以选择从不停顿的动画开始播放,而不是从停止动画的位置开始播放。

var animation;

function rotateCamera(timestamp) {
    map.rotateTo((timestamp / 600) % 360, {duration: 0});
    animation = requestAnimationFrame(rotateCamera);
}

在加载地图时,将通过以下方式调用动画:

animation = rotateCamera(0);

回调看起来像这样:

d3.selectAll("input[name='camerarotation-selection']").on("change", function() {
    if (d3.select("input[name='selection']").property("checked")) {
        rotateCamera(map.getBearing());
    } else {
        cancelAnimationFrame(animation);
    }
});

如果我console.log函数中的时间戳变量rotateCamera,我可以看到尽管有cancelAnimationFrame调用,但它仍在递增。我尝试过声明animation在重新启动时未定义,这似乎也不起作用。我很沮丧!感谢您的帮助。

0 个答案:

没有答案