Организация загрузки ресурсов?
Подскажите как вы ето реализовываете?
Тоесть у меня есть стейт-система, например STATE = STATE_LOADING. Select STATE Case STATE_BLABLA blabla Case STATE_LOADING LoadRes() DrawLoadBar() End Select Дело в том что, пока ресурсы не загрузятся лоадбар не обновится... :( |
Ответ: Организация загрузки ресурсов?
обновляю лоадбар между загрузкой картинок
|
Ответ: Организация загрузки ресурсов?
У меня в игре весит глобальный хук на чтение с диска, и прогресс-бар обновляется с частотой 2 раза в секунду.
|
Ответ: Организация загрузки ресурсов?
SBJoker, можеш, пожалуста обяснить по подробней?
|
Ответ: Организация загрузки ресурсов?
На самом деле всё просто, чтобы рисовать нормальный прогресс бар, нам нужно знать сколько все (по количеству или по объёму) данных мы должны загрузить. Это сделать несложно, можно подсчитать заранее или написать несложный алгоритм подсчёта.
Так же нам нужно в любой момент времени знать сколько уже прочитано (файлов или данных по объёму). С прогрессом по файлам уже всё ясно, обновляемся между загрузками файлов. Однако есть большой минус, прогресс бар неимеет соответствия масштаба и продолжтительности загрузки, т.е. он нелинеен. Большой файл грузится долго а увеличивает длину прогресс бара так же как и мелкие файлы. Если мы хотим плавного движение прогремм бара мы должны считать чколько загружено данных в байтах. Для этого в бмаксе есть всё необходимое. А именно возможность наследования. Если мы пронаследуем поток (а в бмаксе всё загружается именно через него) и зарегистрируем свой протокол, например progress:: , то мы можем сделать хук (hook) ну крюк вопщем... Т.е. мы делаем класс оболочку через которую идёт вся загрузка. Для этого мы реализовываем там все стандартные методы чтения в которых мы и ведём подсчёт байт, после чего вызываем родительский класс через указатель Super . Так же там мы делаем указатель на функцию вызываемую для обновления прогресс бара, присвоив указателю имя реальной функции в коде мы их свяжем. А наш класс-оболочка будет через заданые промежутки времени вызывать эту функцию передавая ей посчитаный процент готовности. |
Ответ: Организация загрузки ресурсов?
поподробнее про хук, пжласта :)
|
Ответ: Организация загрузки ресурсов?
имхо проще вам исходник дать
|
Ответ: Организация загрузки ресурсов?
разберемся, в общем принцип понятен, унаследовать от потока и завести колбэк на ф-цию обновления бара, а хук вешать на тик? так?
кидай сорс :) |
Ответ: Организация загрузки ресурсов?
Вложений: 1
Вот исходник:
|
Часовой пояс GMT +4, время: 21:30. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot