Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Re: Логика многопоточной загрузки. (http://www.flasher.ru/forum/showthread.php?t=208798)

Koopa 30.08.2014 01:17

Re: Логика многопоточной загрузки.
 
Из-за закрытия темы: "Логика многопоточной загрузки" вынужден содать новую тему. Если модеры сочтут нужным, то перенесут моё сообщение в ту тему.

как всё это есть

GBee 30.08.2014 02:17

Koopa, вы что там не могли разжевать и донести свою мысль, что здесь кинули ссылку и типа "я прав". Что вам там не понравилось-то? Вы там только на все утверждения отвечали "Нет", "Я сам лучше знаю" и т.п.
Вы можете по пунктам расписать, что вы хотите объяснить. Написать условия и вывести следствия? Или вы придрались к терминологии? Вас непонятно, короче.

in4core 30.08.2014 04:37

Koopa - вы совершенно походу не понимаете, что пишите. Я когда первый отписал в той теме, я немного о другом думал, а именно о факте 1 поточности флеша. Про загрузку я не подумал. Вот предоставим вам такой код
f.load ( some.jpg )
c.load ( some1.jpg)
локально они или нет, не важно. Если вы выполните такой код, с прослушкой комплит ( лучше инит ) , где some.jpg весит 100 кб , а some1.jpg 200 кб. Вы всегда будете видеть, что some.jpg загрузился раньше. Так же вы можете провести эксперимент с 100 файлов. Эффект будет таким же. Правда есть оговорка и это кстати наводи на размышления. Если вы пи...нете 100 файлов, разных размеров в N загрузчиков, то неизветсно ( каждый раз ) , кто быстрее отработает. Что скажут гуру по этому поводу ? Почему из 100 запросов, разберем их от 1 кб до 100 кб. Иногда раньше грузанется 50 кб, чем 80 кб, или набоборот?! Есть мнения? ( многопоточность п.с. тут не причем, наверное))))))))))))))0ололол )

mikhailk 30.08.2014 11:24

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

Но жизнь достаточно быстро расставила все по своим местам. В реальном приложении, размещенном в Инете, часть ресурсов не догружалась, причем, случайным образом и совершенно непредсказуемо. В итоге приложение то работало стабильно, то глючило.

Так что только конвейерная (последовательная) загрузка. Но переубеждать автора смысла не вижу, видимо, некоторые шишки надо набить самостоятельно.

Zebestov 30.08.2014 11:29

Koopa, а теперь внятно поясни, какое отношение цикл выполнения flash приложения имеет к процессу загрузки данных средствами браузера?

caseyryan 30.08.2014 11:42

Цитата:

Сообщение от Koopa (Сообщение 1171401)
Из-за закрытия темы: "Логика многопоточной загрузки" вынужден содать новую тему. Если модеры сочтут нужным, то перенесут моё сообщение в ту тему.

как всё это есть

Блин. Это же гениально ) Только фишка в том, что загрузчик грузит данные независимо от кадров. В кадрах только события рассылаются. А загрузчиков, которые грузят что-либо одновременно, может быть множество, и им совершенно пофиг как там в программе движутся кадры

Gerbert 30.08.2014 12:24

Цитата:

В первых проектах я пытался применять многопоточную загрузку
Может в этом все и дело? В LoaderMax есть же синхронная загрузка и если бы Выявленный Вами ,fu существовал
на самом деле, то в масштабах мира, его бы вынудили отказаться от это опции.

mikhailk 30.08.2014 12:33

Цитата:

Может в этом все и дело? В LoaderMax есть же синхронная загрузка и если бы Выявленный Вами ,fu существовал
на самом деле, то в масштабах мира, его бы вынудили отказаться от это опции.
В LoaderMax реализована однопоточная загрузка.

Код AS3:

//create a LoaderMax named "mainQueue" and set up onProgress, onComplete and onError listeners
var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler});
 
//append several loaders
queue.append( new XMLLoader("xml/data.xml", {name:"xmlDoc"}) );
queue.append( new ImageLoader("img/photo1.jpg", {name:"photo1", estimatedBytes:2400, container:this, alpha:0, width:250, height:150, scaleMode:"proportionalInside"}) );
queue.append( new SWFLoader("swf/child.swf", {name:"childClip", estimatedBytes:3000, container:this, x:250, autoPlay:false}) );
queue.append( new MP3Loader("mp3/audio.mp3", {name:"audio", repeat:2, autoPlay:true}) );
 
//prioritize the loader named "photo1"
LoaderMax.prioritize("photo1")//same as LoaderMax.getLoader("photo1").prioritize();
 
//start loading
queue.load();

queue - это т.н. называемая "очередь".

Подробности читаем тут:
http://greensock.com/LoaderMax-AS3

MikroAcse 30.08.2014 12:55

Цитата:

В LoaderMax есть же синхронная загрузка
Вы не понимаете, что такое "синхронная загрузка".
Вот что такое синхронная загрузка (такого нет во флеше, только в AIR в виде FileStream):
Код AS3:

var image:Loader = new Loader();
image.loadSync(urlRequest);
//и здесь БЕЗ всяких событий мы УЖЕ можем использовать эту картинку
//готовьтесь к небольшому зависанию


Gerbert 30.08.2014 13:29

Я не правильно выразился. Синхронная, это когда я создал лоадер и дальше код работать не будет, пока лоадер не закончит работать. Такого во флеше нет, но я хотел сказать о параллельной, когда создано несколько лоадеров и в браузере они запущенны одновременно.

Цитата:

В LoaderMax реализована однопоточная загрузка.
Как же нет? Запустите в демо лоадер картинок и установите количество больше одной.
И запустите её в браузере и начнется одновременное скачивание.

Добавлено через 31 минуту
Demo чуть выше кода по Вашей ссылке. Это же не очередь, а одновременная работа нескольких лоадеров.


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

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