0

我在从查看器中删除处理程序时遇到问题。

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”-handler 没有工作。removeAllHandlers 似乎工作,但我只删除一个处理程序失败。

我真正想做的是像滑动效果一样的东西。如果图像未放大并且左边缘击中查看器边框,我想显示下一张图像。也许有更好的方法来做到这一点。

提前致谢

4

1 回答 1

2

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

于 2019-07-03T21:47:36.477 回答