OpenSeaDragon很棒。

如果我使用Viewport#fitBounds JS方法移动到具有默认参数的新矩形,则它将“动画化”当前视图和新请求的边界之间的过渡。

有什么方法可以控制此动画的速度吗?我想放慢速度,因此从当前视图移至请求的边界需要花费更长的时间,以进行更轻松的浏览。

最佳答案

创建OSD查看器时,可以设置animationTime和/或springStiffness。但这也会影响使用鼠标(或触摸板/屏幕等)进行手动平移和缩放时的用户体验。当我尽可能降低速度时,手动平移/缩放体验令人不安且困难。

但是我解决了这个问题,以便在执行#fitBounds时临时更改animationTime(或者可能也更改springStiffness),然后将其恢复为完成时的状态。

// temporarily set OpenSeadragon animation params
// to a very slow animate, then restore.
function withSlowOSDAnimation(viewport, f) {

// save old ones
var oldValues = {};
oldValues.centerSpringXAnimationTime = viewport.centerSpringX.animationTime;
oldValues.centerSpringYAnimationTime = viewport.centerSpringY.animationTime;
oldValues.zoomSpringAnimationTime = viewport.zoomSpring.animationTime;

// set our new ones
viewport.centerSpringX.animationTime =
  viewport.centerSpringY.animationTime =
  viewport.zoomSpring.animationTime =
  6;

// callback
f()

// restore values
viewport.centerSpringX.animationTime = oldValues.centerSpringXAnimationTime;
viewport.centerSpringY.animationTime = oldValues.centerSpringYAnimationTime;
viewport.zoomSpring.animationTime = oldValues.zoomSpringAnimationTime;
}


使用方式如下:

withSlowOSDAnimation(viewer.viewport, function() {
  // stuff
  viewer.viewport.fitBounds(somebounds);
});


尽管我不确定我是否使用的内部API可能会发生变化,但这种方法有效。对于OpenSeadragon来说,这可能是一个很好的附加功能,可以通过fitBounds调用来提供animationTime,springStiffness和/或某些OpenSeadragon.Spring对象,以应用于该fitBounds

关于javascript - 我可以放慢OpenSeaDragon平移/缩放动画的速度吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25020629/

10-14 04:52