OpenSeaDragon 很棒。
如果我使用 Viewport#fitBounds JS 方法移动到具有默认参数的新矩形,它会“动画”当前视图和新请求边界之间的过渡。
有没有办法控制这个动画的速度?我想放慢速度,因此从当前视图移动到请求的边界需要更长的时间,以便更悠闲地游览。
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 来说可能是一个很好的附加功能,能够提供 animationTime、springStiffness 和/或只是一些 OpenSeadragon.Spring 对象的fitBounds
调用,以应用于那个fitBounds
。
很高兴你喜欢!
要影响动画速度,请在创建查看器时使用 springStiffness 和 animationTime 选项。看:
http://openseadragon.github.io/docs/OpenSeadragon.html#Options