【问题标题】:Flash AS3 : how to stop data loading before completion?Flash AS3:如何在完成前停止数据加载?
【发布时间】:2009-10-09 10:16:47
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: flash actionscript-3 download loader


    【解决方案1】:

    这有点极端,但会这样做。 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));
        }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 我试过了,但它似乎没有关闭流。 :(
        【解决方案4】:

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2011-12-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-27
            • 1970-01-01
            • 2016-07-11
            • 2011-04-07
            • 2023-03-30
            相关资源
            最近更新 更多