OpenSeadragon中的RemoveHandler

时间:2019-07-01 15:27:55

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

我可以看到带有缩放系数的输出,但是我从未看到“已删除”的输出。 同样,仅添加和删除“视口更改”处理程序也不起作用。 removeAllHandlers似乎可以正常工作,但是我无法仅删除一个处理程序。

我真正想做的是类似滑动效果。如果图像没有放大并且左边缘碰到观看者边框,我想显示下一张图像。也许有更好的方法可以做到这一点。

预先感谢

1 个答案:

答案 0 :(得分:0)

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