Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Асинхронная загрузка внешних файлов во Flash CS4 cредствами AS3.0 (http://www.flasher.ru/forum/showthread.php?t=140049)

VovaNetLS 18.05.2010 20:56

Асинхронная загрузка внешних файлов во Flash CS4 cредствами AS3.0
 
Я не очень много времени работаю с AS3. И вот в чем проблема.
Мне нужно загрузить одновременно несколько файлов. После нескольких недель поиска решения я узнал что ето достигаетса с помощю компонентов Adobe AIR 1.5 в частности.
Но компоненти Adobe AIR очень плохо настраиваютса на роботу с HTML.
Конкретнее если файл запускать через отладку в Flash CS4 то все вроде нормально, но если делать публикацию, swf и html то ничево не отображаетса и ничево не работает.
Пример такой загрузки http://www.adobe.com/products/air/
Зарание спасибо

-De- 18.05.2010 23:24

http://www.adobe.com/products/air/ - я слабо петрю в AIR, но по ссылке явно не AIR приложение %)
Тупо куча лоадеров/урллоадеров, по числу файлов, которые надо асинхронно загрузить, тупо вызвать у них у всех подряд .load (например в одной функции) и они будут грузить вполне асинхронно. Думаю по ссылке где-то так и сделано.

Zebestov 18.05.2010 23:50

ххех. VovaNetLS, тут люди рулоны кода последовательной загрузки на любой вкус выкладывают, а ты хочешь как-то необычно сделать то, что и так само собой происходит =)

VovaNetLS 19.05.2010 17:50

-De- такая реализация не подходит.
Я использовал URLLoader так как нужно грузить xml, mp3, png, css.
В начале реестриловал собитие Event.OPEN, потом Event.PROGRESS и наконец Event.COMPLETE. Собитие Event.OPEN второво файла начинаетса после собития Event.COMPLETE первово. И так в сторгой последовательности задания файлов.
Мне же нужно чтоб загружались все файлы одновременно и виводились на екран в последовательности увеличения размера файла...

Добавлено через 35 секунд
Zebestov а не моглы бы Ви навести какие то примеры?

Zebestov 19.05.2010 19:05

Цитата:

Сообщение от VovaNetLS (Сообщение 909377)
Zebestov а не моглы бы Ви навести какие то примеры?

Да ну скукота =) лучше ты кинь код, который у тебя сам по себе последовательную загрузку организует, во заинтриговал 0о

VovaNetLS 19.05.2010 19:19

В файле ShowLoading.as есть масив
в масиве передаютса: путь, имя файла, его тип и приоритет загрузки
все даные берутса с глобального класа GlobalData
Код AS3:

LoadArrayData = new Array(new Array(GlobalData.PathXml, GlobalData.FileXML, "XML", 1),
                        new Array(GlobalData.PathTrack, GlobalData.FileSound, "Sound", 0),
                        new Array(GlobalData.PathPic, GlobalData.FilePic, "Bitmap", 1),
                        new Array(GlobalData.PathStyleCSS, GlobalData.FileCss, "StyleSheet", 1));
 
                        for each (var file:* in LoadArrayData) {
                                ObjLoaderContent.LoadData(file[0], file[1], file[2]);
                        }
после каждой итерации цикла визиваетса функция из класа LoaderContent.as
public function LoadData(path:String,file:String,priority:int):void
                {
                        var urlRequest:URLRequest = new URLRequest(path + file);
                        var dataLoader:URLLoader = new URLLoader  ;
 
                        dataLoader.addEventListener(Event.OPEN,OpenLoadData,false,priority);
                        dataLoader.addEventListener(ProgressEvent.PROGRESS,ProgressLoadData,false,priority);
                        dataLoader.addEventListener(Event.COMPLETE,ComplLoadData,false,priority);
                        dataLoader.load(urlRequest);
                }
private function OpenLoadData(e:Event):void
                {
                        CountFirstLoadItem += 1;
                        if (CountFirstLoadItem>=ShowLoading.LoadArrayData.length) {
                                ObjShowLoading.StopCircutRound();
                        }
 
                }
 
                private function ProgressLoadData(e:ProgressEvent):void
                {
                        ShowLoading.LoadArrayData[CountFirstLoadItem-1][4]=e.bytesLoaded/e.bytesTotal;
                }
 
                private function ComplLoadData(e:Event):void
                {
 
                }

и количество загруженых байтов должно передаватса в ShowLoading.as где меняет свой статус полоса загрузки

Zebestov 19.05.2010 19:28

пока читаю, отмечу, что сейчас придет etc, и "заколет вилами за неоформленный код" ;)

etc 19.05.2010 19:31

VovaNetLS, отредактируйте свой пост и оформите код тегами [as3][/as3].

Zebestov 19.05.2010 19:45

в zip-е в указанном тобой классе и соотв. методе совсем другой код — там работа ведется с FileStream. ты код, который тут выложил тестировал? именно он у тебя грузит последовательно?

P.S. оформи код тегами — глаза рэжэт

VovaNetLS 19.05.2010 19:54

да именно он... при чем если передавать в собитии
Код AS3:

private function ProgressLoadData(e:ProgressEvent):void
{
ShowLoading.LoadArrayData[CountFirstLoadItem-1][4]=e.bytesLoaded/e.bytesTotal;
}

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


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

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