1

OpenSeaDragon 很棒。

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

有没有办法控制这个动画的速度?我想放慢速度,因此从当前视图移动到请求的边界需要更长的时间,以便更悠闲地游览。

4

2 回答 2

3

您可以在创建 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 来说可能是一个很好的附加功能,能够提供 animationTime、springStiffness 和/或只是一些 OpenSeadragon.Spring 对象的fitBounds调用,以应用于那个fitBounds

于 2014-08-03T19:46:05.690 回答
2

很高兴你喜欢!

要影响动画速度,请在创建查看器时使用 springStiffness 和 animationTime 选项。看:

http://openseadragon.github.io/docs/OpenSeadragon.html#Options

于 2014-07-31T18:21:43.217 回答