Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   отмена загрузки файла (AS3) (http://www.flasher.ru/forum/showthread.php?t=141179)

ninth 18.06.2010 00:25

отмена загрузки файла (AS3)
 
В общем во флешу грузятся картинки. По нажатию на кнопку грузится вторая и т.д. Как отменить, прервать загрузку предыдущей.
А то получается если первая ещё не загрузилась до конца, то она продолжает грузиться хотя уже началась загрузка второй.
Искал, нашёл close(), но почему-то работать не хочет. Может чего не хватает.

В общем нужно узнать, грузится ли в данный момент файл, и если да то остановить его загрузку и начать загрузку другого файла, ну ил просто прервать загрузку

код приблизительно такой

Код AS3:

var i=0;
function loadIMG(i) {
        var loader:Loader = new Loader();
        var urlRequest:URLRequest=new URLRequest("0"+i+".jpg");
        loader.load(urlRequest);
 
        loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoaded_PROGRESS);
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
 
        function imageLoaded_PROGRESS(e:ProgressEvent):void {
                trace(e.target.bytesLoaded+" / "+e.target.bytesTotal);
        }
 
        function imageLoaded(e:Event):void {
                addChild(loader);
        }
 
        btn.addEventListener(MouseEvent.CLICK, stopLoad);
        function stopLoad(event:MouseEvent):void {
                try {
                        loader.close();
                        trace("шла какая-то загрузка");
                } catch (error:Error) {
                        trace("нет загрузки");
                }
                i++;
                loadIMG(i);
        }
}
loadIMG(0);

почему close() не срабатывает?

zurkis 18.06.2010 00:35

я думаю что чтоб сделать отмену загрузки, сначала почитай про класс URLLoader

ninth 18.06.2010 01:49

Цитата:

Сообщение от zurkis (Сообщение 916389)
я думаю что чтоб сделать отмену загрузки, сначала почитай про класс URLLoader

А при чём тут класс URLLoader. Он же вроде для текста, и для загрузки картинок не подходит.

Хемуль 18.06.2010 01:54

2 ninth:
А как вы определили, что close не работает?

А URLLoader не для текста. Точнее, далеко не только для него.
Цитата:

The URLLoader class downloads data from a URL as text, binary data, or URL-encoded variables. It is useful for downloading text files, XML, or other information to be used in a dynamic, data-driven application.

ninth 18.06.2010 04:13

Цитата:

"Класс Loader используется для загрузки SWF-файлов либо файлов изображений (JPG, PNG или GIF). Используйте метод load() для инициации загрузки. Загруженный экранный объект добавляется в качестве потомка объекта Loader
Используйте класс URLLoader для загрузки текстовых или двоичных данных."
http://help.adobe.com/ru_RU/AS3LCR/F...ay/Loader.html

И Ваша фцитата, на русском
Цитата:

Класс URLLoader загружает данные с URL-адреса в виде текста, двоичных данных или переменных в кодировке URL. Это оказывает помощь при загрузке текстовых файлов, XML-объектов или других сведений, которые будут использованы в динамическом приложении по обработке данных.
http://help.adobe.com/ru_RU/AS3LCR/F...URLLoader.html

Ну вот примерно выше приведённое вычитал и решил, что для загрузки JPG лучше использовать Loader

А определил просто что close() не срабатывает в режиме Simulate Download. (Хотя млин может я что-то неправильно делаю, скорей всего :()

что, не уж-то никто не сталкивался с подобным, хоть примерчик, один, как остановить загрузку не файла, а именно картинки

Чёт даже простой пример нифига не работает. Может в режиме Simulate Download немного по другому?

попробовал так:
Код AS3:

//новый лоадер
var lod:Loader = new Loader();
//урл
lod.load(new URLRequest("01.jpg"));
//прогресс
lod.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoaded_PROGRESS);
//по завершению загрузки
lod.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
//отслеживание прогресса
function imageLoaded_PROGRESS(event:ProgressEvent):void {
        trace(event.target.bytesLoaded+" / "+event.target.bytesTotal);
}
//по завершению загрузки, как только так сразу :)
function imageLoaded(event:Event):void {
        //только если всё загруженно добавлям (хотя пофиг)
        if (event.target.bytesLoaded==event.target.bytesTotal) {
                trace("загрузилось");
                addChild(lod);
        } else {
                trace("не загрузилось и не надо");
        }
}
//останоака загрузки
btn.addEventListener(MouseEvent.CLICK, stopLoad);
function stopLoad(event:MouseEvent):void {
        try {
                //и тут типо должна остановиться загрузка :(
                lod.close();
                trace("шла какая-то загрузка");
        } catch (error:Error) {
                trace("нет загрузки");
        }
}

почитал http://help.adobe.com/ru_RU/AS3LCR/F...l#unload%28%29 попробовал по другому
Код AS3:

//новый лоадер
var lod:Loader = new Loader();
//добавляем
addChild(lod);
//урл
lod.load(new URLRequest("01.jpg"));
//Удаляет дочерний объект этого объекта Loader, загруженный с помощью метода load().
//Параметр property связанного объекта LoaderInfo сброшен до значения null.
//Дочерний объект не обязательно удаляется, так как на него могут ссылаться другие объекты.
//Однако он больше не является дочерним для объекта Loader.
//попробуем
lod.loaderInfo.addEventListener(Event.UNLOAD, lodUnload);
//прогресс
lod.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoaded_PROGRESS);
//по завершению загрузки
lod.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
//отслеживание прогресса
function imageLoaded_PROGRESS(event:ProgressEvent):void {
        trace(event.target.bytesLoaded+" / "+event.target.bytesTotal);
}
//по завершению загрузки, как только так сразу :)
function imageLoaded(event:Event):void {
        trace("загрузилось");
}
//останавливаем загрузку
function lodUnload(evt:Event) {
        lod.close();
}
//останоака загрузки
btn.addEventListener(MouseEvent.CLICK, stopLoad);
function stopLoad(event:MouseEvent):void {
        lod.unload();
}

не пашет, всёравно продолжает грузить. Масаракш


Часовой пояс GMT +4, время: 22:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.