1

我正在开发一个使用来自服务器的资源(图像/声音)的系统。在用户操作时,我下载特定资源并使用它们。

现在,在所有这些资源下载完成之前,如果用户执行其他操作,我想停止/取消下载当前资源。这可能吗?

我尝试了 Loader.stop() 方法,但它似乎没有按应有的方式工作。

不取消这会减慢新资源的下载过程,并且用户必须等待很长时间才能获得新资源。

4

5 回答 5

2

这有点极端,但会这样做。Loader.close() 应该足够了。

    private var imageLoader:Loader;
    private function load(imageIndex:int = 0):void {
        //if it's already loading something. Cancels the current loading.
        if (imageLoader && imageLoader.contentLoaderInfo) {
            imageLoader.close();
            imageLoader.unloadAndStop(true);
            imageLoader.contentLoaderInfo.removeEventListener(Event.INIT, onImageLoaded);
            imageLoader = null;
        }
        imageLoader = new Loader();
        imageLoader.contentLoaderInfo.addEventListener(Event.INIT, onImageLoaded);
        imageLoader.load(new URLRequest(staticVo.images[imageIndex].imageFile));
    }
于 2011-08-09T15:32:59.910 回答
1

我做了以下事情:删除了 Loader 对象并删除了它的所有侦听器。现在,即使系统继续下载资源,也没有地方显示它,也没有调用完成/进度/失败的事件。

于 2011-06-06T15:22:15.820 回答
0

你在真实服务器上试过吗?Flash IDE 有一个已知错误,会阻止其Loader.close()正常工作...

于 2009-10-20T06:30:28.270 回答
0

您可以使用Sound类的close()方法停止下载声音。这种方法

关闭流,导致任何数据下载停止。close()调用该方法后,不能从流中读取任何数据。

至于图像和电影,Loader该类确实有一个unload() 方法,但我不确定在下载过程中调用该方法是否有效。

于 2009-10-09T10:26:46.637 回答
0

这种方法可能会有所帮助:

http://onflash.org/ted/2007/12/progressive-image-loading-with.php

于 2009-10-20T05:43:31.657 回答