|
26.10.2008, 16:55
|
#1
|
Нуждающийся
Регистрация: 23.08.2008
Сообщений: 55
Написано 4 полезных сообщений (для 4 пользователей)
|
Организация загрузки ресурсов?
Подскажите как вы ето реализовываете?
Тоесть у меня есть стейт-система, например STATE = STATE_LOADING.
Select STATE
Case STATE_BLABLA
blabla
Case STATE_LOADING
LoadRes()
DrawLoadBar()
End Select
Дело в том что, пока ресурсы не загрузятся лоадбар не обновится...
__________________
мои игры
требуется художник, за подробностями в асю - 428078069
|
(Offline)
|
|
26.10.2008, 17:09
|
#2
|
|
Ответ: Организация загрузки ресурсов?
обновляю лоадбар между загрузкой картинок
|
|
|
Сообщение было полезно следующим пользователям:
|
|
26.10.2008, 17:58
|
#3
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Организация загрузки ресурсов?
У меня в игре весит глобальный хук на чтение с диска, и прогресс-бар обновляется с частотой 2 раза в секунду.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
26.10.2008, 18:16
|
#4
|
Нуждающийся
Регистрация: 23.08.2008
Сообщений: 55
Написано 4 полезных сообщений (для 4 пользователей)
|
Ответ: Организация загрузки ресурсов?
SBJoker, можеш, пожалуста обяснить по подробней?
__________________
мои игры
требуется художник, за подробностями в асю - 428078069
|
(Offline)
|
|
26.10.2008, 19:06
|
#5
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Организация загрузки ресурсов?
На самом деле всё просто, чтобы рисовать нормальный прогресс бар, нам нужно знать сколько все (по количеству или по объёму) данных мы должны загрузить. Это сделать несложно, можно подсчитать заранее или написать несложный алгоритм подсчёта.
Так же нам нужно в любой момент времени знать сколько уже прочитано (файлов или данных по объёму).
С прогрессом по файлам уже всё ясно, обновляемся между загрузками файлов. Однако есть большой минус, прогресс бар неимеет соответствия масштаба и продолжтительности загрузки, т.е. он нелинеен. Большой файл грузится долго а увеличивает длину прогресс бара так же как и мелкие файлы.
Если мы хотим плавного движение прогремм бара мы должны считать чколько загружено данных в байтах.
Для этого в бмаксе есть всё необходимое. А именно возможность наследования. Если мы пронаследуем поток (а в бмаксе всё загружается именно через него) и зарегистрируем свой протокол, например progress:: , то мы можем сделать хук (hook) ну крюк вопщем... Т.е. мы делаем класс оболочку через которую идёт вся загрузка. Для этого мы реализовываем там все стандартные методы чтения в которых мы и ведём подсчёт байт, после чего вызываем родительский класс через указатель Super . Так же там мы делаем указатель на функцию вызываемую для обновления прогресс бара, присвоив указателю имя реальной функции в коде мы их свяжем. А наш класс-оболочка будет через заданые промежутки времени вызывать эту функцию передавая ей посчитаный процент готовности.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.10.2008, 21:26
|
#6
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Организация загрузки ресурсов?
поподробнее про хук, пжласта
|
(Offline)
|
|
29.10.2008, 00:23
|
#7
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Организация загрузки ресурсов?
имхо проще вам исходник дать
__________________
|
(Offline)
|
|
29.10.2008, 10:10
|
#8
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Организация загрузки ресурсов?
разберемся, в общем принцип понятен, унаследовать от потока и завести колбэк на ф-цию обновления бара, а хук вешать на тик? так?
кидай сорс
|
(Offline)
|
|
29.10.2008, 11:05
|
#9
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Организация загрузки ресурсов?
Вот исходник:
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:37.
|