forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   Организация загрузки ресурсов? (http://forum.boolean.name/showthread.php?t=7239)

snikers 26.10.2008 16:55

Организация загрузки ресурсов?
 
Подскажите как вы ето реализовываете?

Тоесть у меня есть стейт-система, например STATE = STATE_LOADING.

Select STATE
Case STATE_BLABLA
blabla
Case STATE_LOADING
LoadRes()
DrawLoadBar()
End Select

Дело в том что, пока ресурсы не загрузятся лоадбар не обновится... :(

jimon 26.10.2008 17:09

Ответ: Организация загрузки ресурсов?
 
обновляю лоадбар между загрузкой картинок

SBJoker 26.10.2008 17:58

Ответ: Организация загрузки ресурсов?
 
У меня в игре весит глобальный хук на чтение с диска, и прогресс-бар обновляется с частотой 2 раза в секунду.

snikers 26.10.2008 18:16

Ответ: Организация загрузки ресурсов?
 
SBJoker, можеш, пожалуста обяснить по подробней?

SBJoker 26.10.2008 19:06

Ответ: Организация загрузки ресурсов?
 
На самом деле всё просто, чтобы рисовать нормальный прогресс бар, нам нужно знать сколько все (по количеству или по объёму) данных мы должны загрузить. Это сделать несложно, можно подсчитать заранее или написать несложный алгоритм подсчёта.

Так же нам нужно в любой момент времени знать сколько уже прочитано (файлов или данных по объёму).

С прогрессом по файлам уже всё ясно, обновляемся между загрузками файлов. Однако есть большой минус, прогресс бар неимеет соответствия масштаба и продолжтительности загрузки, т.е. он нелинеен. Большой файл грузится долго а увеличивает длину прогресс бара так же как и мелкие файлы.

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

Для этого в бмаксе есть всё необходимое. А именно возможность наследования. Если мы пронаследуем поток (а в бмаксе всё загружается именно через него) и зарегистрируем свой протокол, например progress:: , то мы можем сделать хук (hook) ну крюк вопщем... Т.е. мы делаем класс оболочку через которую идёт вся загрузка. Для этого мы реализовываем там все стандартные методы чтения в которых мы и ведём подсчёт байт, после чего вызываем родительский класс через указатель Super . Так же там мы делаем указатель на функцию вызываемую для обновления прогресс бара, присвоив указателю имя реальной функции в коде мы их свяжем. А наш класс-оболочка будет через заданые промежутки времени вызывать эту функцию передавая ей посчитаный процент готовности.

dimanche13 28.10.2008 21:26

Ответ: Организация загрузки ресурсов?
 
поподробнее про хук, пжласта :)

SBJoker 29.10.2008 00:23

Ответ: Организация загрузки ресурсов?
 
имхо проще вам исходник дать

dimanche13 29.10.2008 10:10

Ответ: Организация загрузки ресурсов?
 
разберемся, в общем принцип понятен, унаследовать от потока и завести колбэк на ф-цию обновления бара, а хук вешать на тик? так?
кидай сорс :)

SBJoker 29.10.2008 11:05

Ответ: Организация загрузки ресурсов?
 
Вложений: 1
Вот исходник:


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot