Flash AS3: как остановить загрузку данных до завершения? - PullRequest
1 голос
/ 09 октября 2009

Я разрабатываю систему, которая использует ресурсы (изображение / звук) с сервера. По действию пользователя я скачиваю конкретные ресурсы и использую их.

Теперь, прежде чем загрузка всех этих ресурсов завершится, если пользователь выполнит другое действие, я хочу прекратить / отменить загрузку текущих. Это возможно?

Я пытался использовать метод Loader.stop (), но он не работает должным образом.

Отмена этого замедляет процесс загрузки нового ресурса, и пользователю приходится долго ждать новых ресурсов.

Ответы [ 5 ]

2 голосов
/ 09 августа 2011

Это немного экстремально, но сделаю это. 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 голос
/ 06 июня 2011

Я сделал следующее: удалил объект Loader и удалил все его слушатели. Теперь, даже если система продолжает загружать ресурс, нет места для его отображения, а также нет события, которое можно вызвать по завершению / прогрессу / неудаче.

0 голосов
/ 20 октября 2009

Этот подход может быть полезен:

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

0 голосов
/ 20 октября 2009

Вы пробовали это на реальном сервере? В Flash IDE есть известная ошибка, которая мешает правильной работе Loader.close() ...

0 голосов
/ 09 октября 2009

Вы можете прекратить загрузку звука, используя метод close() класса Sound . Этот метод

Закрывает поток, вызывая прекращение любой загрузки данных. Данные не могут быть прочитаны из потока после вызова метода close().

Что касается изображений и фильмов, класс Loader имеет метод unload() , но я не уверен, будет ли вызывать этот метод во время загрузки.

...