OpenSeaDragon太棒了。
如果我使用Viewport#fitBounds JS方法移动到一个带有默认参数的新矩形,它会动画'当前视图与新请求的边界之间的转换。
有没有办法控制这个动画的速度?我想放慢速度,因此从当前视图移动到请求的边界需要更长的时间,以便进行更悠闲的旅行。
答案 0 :(得分:2)
您可以在创建OSD查看器时设置animationTime和/或springStiffness。但是,当用鼠标(或触摸板/屏幕等)手动平移和缩放时,这将影响用户体验。当我按照我想要的速度放慢速度时,手动平移/缩放体验令人不安和困难。
但是我做了这个hack来暂时改变animationTime(或者也可能是springStiffness)来做#fitBounds,然后把它放回到你完成时的状态。
// 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和/或只有一些带有fitBounds
调用的OpenSeadragon.Spring对象,以应用于fitBounds
。
答案 1 :(得分:1)
很高兴你喜欢!
要影响动画速度,请在创建查看器时使用弹簧刚度和动画时间选项。参见:
http://openseadragon.github.io/docs/OpenSeadragon.html#Options