0

在我的情况下,我在查看器中加载了 10 张具有相同边界的图像。每个图像都一个接一个地排列。

// source is an array of url images.

for(i=0;i < source.length-1;i++){
        this.viewer.addTiledImage({
                tileSource: source[i],
                index: i,
                opacity:0
            });
}

我的意图是使用滑块(范围输入)控制每个图像的不透明度,滑块将对应的图像不透明度设置为 1,并让其他图像不透明度。这很好用。

这个想法是预加载图像并平滑地更改图像。

问题

所有图像在缩放或平移时同时加载,所以我想控制加载顺序并优先考虑可见图像然后加载下一个图像,依此类推。

我怎样才能做到这一点?我找不到任何方法来暂停瓷砖的加载。

谢谢你的帮助。

4

2 回答 2

1

您可以尝试使用“打开”事件并在上一张图片加载后添加下一张图片。就像是:

var i =0, viewer = this.viewer;
viewer.addTiledImage({
    tileSource: source[i],
    index: i,
    opacity:0
});
viewer.addHandler('open', function() {
    i++;
    if (source[i]) {
        viewer.addTiledImage({
            tileSource: source[i],
            index: i,
            opacity:0
        });
    } else {
        viewer.removeAllHandlers('open');
    }
});

请注意,这是未经测试的示例代码,但您应该明白这一点。您实际上应该使用 removeHandler() 而不是 removeAllHandlers(),但这只是一个示例。

于 2016-06-27T06:38:41.553 回答
0

我可以通过控制不透明度而不是控制网络下载来解决我的问题,openseadragon 无法控制 dzi 图像级别的下载顺序,所以方法是控制不透明度,因为 0 不透明度不进行任何下载。感谢 openseadragon 的贡献者帮助我解决了这个问题。

https://github.com/openseadragon/openseadragon/issues/971

于 2016-08-02T20:27:06.367 回答