Flash AS3:如何在完成之前停止数据加载?

时间:2009-10-09 10:16:48

标签: flash actionscript-3 download loader

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

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

我尝试使用Loader.stop()方法,但它似乎不能正常工作。

不取消此操作会降低新资源下载过程的速度,用户必须等待很长时间才能获得新资源。

5 个答案:

答案 0 :(得分: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));
    }

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

  

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

对于图片和电影,Loader班级确实有unload() method,但我不确定在下载过程中调用该方法是否有效。< / p>

答案 3 :(得分:0)

答案 4 :(得分:0)

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