OpenSeadragon 中的 RemoveHandler

RemoveHandler in OpenSeadragon

我无法从查看器中删除处理程序。

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());
    }
});

我可以看到带有缩放系数的输出,但我从未看到 "removed" 输出。 另外,仅添加和删除 "viewport-change"-handler 也不起作用。 removeAllHandlers 似乎有效,但我只删除一个处理程序失败了。

我真正尝试做的是类似滑动效果的东西。如果图像没有放大并且左边缘碰到查看器边框,我想显示下一张图像。也许有更好的方法。

提前致谢

为了使 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 上的处理程序(加上您自己编写的一些额外逻辑)就足够了。