Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.11.2005, 19:05
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 1  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
По умолчанию Как мониторить загрузку очень большого кол-ва разных данных...

Добрый вечер, столкнулся с проблемой загрузки большого кол-ва разных данных. Ситуация примерно такая, у нас существует произовольное кол-во различных объектов которые грузятся из вне: объект в данном контексте - такая вещь которая грузит в себя данные (это MovieClip, XML и т.п.). Причем кол-во этих элементов мне не известно - мне его возвращает серверный скрипт. Задача сделать грамотный и универсальный прелоадер.
Вижу два пути:
1) наследовать все классы которые принимают или могут в себя принимать данные от какого-то абстрактного класса типа LoadListener, который содержит метод isLoad() и переменные isReady, которые соотвественно дергаются при событии onLoad у XML или onLoadInit у MovieClipLoader. И переопределять эти методы, т.е. объясню на примере:
Есть клавиатура class Keyboard, у неё есть много кнопок (сколько - не занаю) class Keybutton, каждая кнопка загружает в себя фон (внешний swf) и фон когда мышка над ней наведена (тоже внешний swf), как только они загрузятся вызовется isLoad() класса Keybutton, который сскажет Keyboard, что все кнопки готовы и загружены. В свою очередь, Keyboard должна отследить что все её кнопки готовы и загружен еще фон для Keyboard - только после этого дернется метод isLoad(). А клавиатура может находиться еще в экземпляре класса Window, который еще помимо этой клавиатуры содержит тучу других объектов, которые в себя тоже что-то грузят - значит он должен их всех тоже мониторить и т.п. Это очень трудоемкий способ, начал я его было реализовывать - отнимает много времени, неподходит.
2) На ум пришел другой способ, проще, но возможно бредовый. Каждый объект кто чего-то грузит в себя - говорит стратическому классу Preloader что он грузит в себя n-байтов getBytesTotal() и вообще о том что он есть. А потом в процессе, какой нибудь setInterval опрашивает все эти объекты на getBytesTotal() и getBytesLoaded() - плюсует их все. И показывает единый статус бар, а как только кол-во всех данных сравнялось с кол-во загруженных, убирает маску или там фон который это все дело прятал.

Хотелось бы узнать не делал ли кто либо чего-то похожего и не поделится ли опытом.
Заранее спасибо Вам за ответы.

Старый 09.11.2005, 19:31
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 2  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
при прочтении вопросе я сразуже подумал о втором варианте, только немного другом - тот же клас перлоадер только у него есть свойство массив_указатель_на_обекты_которые_что_то_грузят_в_себя, методы добавления/удаления этих объектов и метод который через определенный интервал опрашивает эти объеткы как у них успехи. Короче теже яйца только сбоку %))

Старый 09.11.2005, 20:27
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 3  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
http://proto.layer51.com/d.aspx?f=550
http://proto.layer51.com/d.aspx?f=741
http://proto.layer51.com/d.aspx?f=1246

в 1м варианте хорошая мысль. всё грузить через XML.load
а по окончании уже назначать разбор полётов что это мы загрузили и загружать заново, и куда надо, но уже из кеша и за доли секунды.
__________________
Breakcore them all!

Старый 09.11.2005, 20:35
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 4  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Цитата:
Сообщение от KidsKilla
[url]http://proto.layer51.com/....
Спасибо за ссылочки, правда наверное быстрее будет самому написать это - чем переписывать на AS 2.0

Старый 09.11.2005, 20:47
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 5  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
дык а чего толку тогда переписывать на ас2, ежели есть MovieClipLoader ???
__________________
Breakcore them all!

Старый 09.11.2005, 21:12
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 6  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Судя по коду , да и примеру :
Код:
onPreloadComplete = function(){
	trace("DONE");
}

var preloader= new PreloadQue(this); 
preloader.setPreloadHandler("onPreloadComplete", this) 
preloader.addItem("http://foo.com.foo1.swf"); 
preloader.addItem("http://foo.com.foo2.swf"); 
preloader.addItem("http://foo.com/foo.xml"); 
preloader.addItem("http://foo.com/foo.txt"); 
preloader.start();
Это штука сначала принимает в себя всякое разное, потом когда это барахло загрузится дергает функцию , которая была задана в setPreloadHandler.
А каким образом это относится к MovieClip Loader? Я связи не уловил.

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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