RemoveHandler в OpenSeadragon - PullRequest
       21

RemoveHandler в OpenSeadragon

0 голосов
/ 01 июля 2019

У меня проблемы с удалением обработчика из программы просмотра.

viewer.addHandler('viewport-change', function() {
     // do stuff works
});

viewer.addHandler('zoom', function() {
    if (viewer.viewport.getZoom() > threshold) {
        viewer.removeHandler('viewport-change', function() {
            console.log("removed");
        });
        console.log("Zoom:" + viewer.viewport.getZoom());
    }
});

Я могу видеть выходные данные с коэффициентом масштабирования, но я никогда не видел «удаленные» выходные данные. Также просто не работало добавление и удаление обработчика viewport-change. похоже, что removeAllHandlers работает, но мне не удается удалить только один обработчик.

То, что я действительно пытаюсь сделать, это что-то вроде эффекта смахивания. Если изображение не увеличено, и левый край достигает границы зрителя, я хочу показать следующее изображение. Может быть, есть лучший способ сделать это.

Заранее спасибо

1 Ответ

0 голосов
/ 04 июля 2019

Чтобы заставить removeHandler работать, она должна быть той же самой функцией, которую вы использовали с addHandler, например:

var viewportChangeHandler = function() {
     // do stuff works
};

viewer.addHandler('viewport-change', viewportChangeHandler);

viewer.addHandler('zoom', function() {
    if (viewer.viewport.getZoom() > threshold) {
        viewer.removeHandler('viewport-change', viewportChangeHandler);
        console.log("Zoom:" + viewer.viewport.getZoom());
    }
});

Тем не менее, если все, что вы хотите сделать, это обнаружить пролистывания, достаточно просто обработчика на canvas-drag (плюс некоторая дополнительная логика вашего собственного написания).

...