Вы можете установить animationTime и/или springStiffness при создании средства просмотра OSD. Но это также повлияет на работу пользователя при панорамировании и масштабировании вручную с помощью мыши (или сенсорной панели/экрана и т. д.). Когда я замедлил его настолько, насколько хотел, ручное панорамирование / масштабирование было сбивающим с толку и трудным.
Но я разработал этот хак, чтобы временно изменить 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 и/или просто некоторые объекты OpenSeadragon.Spring с вызовом fitBounds
для применения к этому fitBounds
.
person
jrochkind
schedule
03.08.2014