我正在开发一个使用服务器资源(图像/声音)的系统。在用户操作上,我下载特定资源并使用它们。
现在,在所有这些资源下载完成之前,如果用户执行另一个操作,我想停止/取消下载当前的操作。这可能吗?
我尝试使用Loader.stop()方法,但它似乎不能正常工作。
不取消此操作会降低新资源下载过程的速度,用户必须等待很长时间才能获得新资源。
答案 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()
正常工作...