我正在开发一个使用来自服务器的资源(图像/声音)的系统。在用户操作时,我下载特定资源并使用它们。
现在,在所有这些资源下载完成之前,如果用户执行其他操作,我想停止/取消下载当前资源。这可能吗?
我尝试了 Loader.stop() 方法,但它似乎没有按应有的方式工作。
不取消这会减慢新资源的下载过程,并且用户必须等待很长时间才能获得新资源。
我正在开发一个使用来自服务器的资源(图像/声音)的系统。在用户操作时,我下载特定资源并使用它们。
现在,在所有这些资源下载完成之前,如果用户执行其他操作,我想停止/取消下载当前资源。这可能吗?
我尝试了 Loader.stop() 方法,但它似乎没有按应有的方式工作。
不取消这会减慢新资源的下载过程,并且用户必须等待很长时间才能获得新资源。
这有点极端,但会这样做。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));
}
我做了以下事情:删除了 Loader 对象并删除了它的所有侦听器。现在,即使系统继续下载资源,也没有地方显示它,也没有调用完成/进度/失败的事件。
你在真实服务器上试过吗?Flash IDE 有一个已知错误,会阻止其Loader.close()
正常工作...
您可以使用Sound类的close()
方法停止下载声音。这种方法
关闭流,导致任何数据下载停止。
close()
调用该方法后,不能从流中读取任何数据。
至于图像和电影,Loader
该类确实有一个unload()
方法,但我不确定在下载过程中调用该方法是否有效。