![]() |
Загрузка
Подскажите пжалста как сделать путевую загрузку.:SOS: Вот допустим грузится большой город некоторое время, все это время мы видим черный экран, а как сделать ползущую линию, или надпись Пожалуйста подождите:) Ну я надеюсь вы поняли, что я имею ввиду:)
|
Re: Загрузка
хм... так.. щас отвечу
*отвечаю* в общем, если город по частям загружается, то перед опр загрузкой части ставь: [blitz] Cls Pr = /процент загрузки, или ширина. / Text GraphicsWidth /2 , GraphicsHeight /2 , "Пожалуйста, подождите" Rect GraphicsWidth /2 - 50 , GraphicsHeight /2 + 100 , pr, 30 , 1 Flip [/blitz] Пример. [blitz] Global Pr Color 255,0,0 *загрузка карты* Cls Pr = 20 Text GraphicsWidth /2 , GraphicsHeight /2 , "Пожалуйста, подождите" Rect GraphicsWidth /2 - 50 , GraphicsHeight /2 + 100 , pr, 30 , 1 Flip *загрузка карты* Cls Pr = 30 Text GraphicsWidth /2 , GraphicsHeight /2 , "Пожалуйста, подождите" Rect GraphicsWidth /2 - 50 , GraphicsHeight /2 + 100 , pr, 30 , 1 Flip *загрузка карты* и так далее [/blitz] А если не по частям, то просто [blitz] Cls Text GraphicsWidth /2 , GraphicsHeight /2 , "Пожалуйста, подождите" Flip [/blitz] Кстати, формула для процентов : (GraphicsWidth / общая ширина) / 100 * процент загрузки |
Re: Загрузка
Огроменное спасибище, все оказалось проще, чем я думал. Ща буду разбираться в коде.!
|
Re: Загрузка
А можно и без полоски обойтись, показывая например советы по прохождению или красивые скриншоты из игры, или там анимацию.
|
Re: Загрузка
Неее
Полоска рулит!!!! И када её реалезовываеш чече понимаеш то дольше держит блиц на загрузке;) |
Re: Загрузка
to Данил, это не оптимальный способ !!
и не обезательно карта загрузится когда у тебя полоска станет в 100% !! или наоборот !! Ты понемаеш о чем Я ?? надо зделать так: загрузить карту, засекти время сколько она грузится, а потом делаеш такую же полоску, только двигаться она будет уже по времени которое ты засек !! так будет точнее !! |
Re: Загрузка
жаль только расхождения от производительности разных машин могут быть. Я бы остановился либо на поэтапной загрузке - если так уж долго, и на "картинке"(всё что угодно полезное что можно почитать, да хоть детали механики игры ala "от дэвов") с сообщением о том чтоб подождали.. загрузка займёт секунд 10 (человек натура ленивая сама и ненавидящая лень в других - поэтому всегда хочет как минимум знать сколько ему надо ждать, даже если это всего секунд 5 - комфорт играющего - много стоит)
|
Re: Загрузка
Цитата:
ну пока не загрузится !! |
Re: Загрузка
) да, это тоже частый вариант. Я просто такого рода полоски "с детства не люблю" (не больше чем имхо)
По этому поводу гдето ((((( флэшка в сети валяется.. про полоску.. культовая вещь я считаю, жаль не сохранил в своё время: показывается полоска загрузки.. она бежит бежит.. долго так.. уже почти закончилась, вдруг! вопреки ожиданиям она со скрёжетом проламывается через левую границу отведённого ей пространства и продолжает предательски упорно шагать дальше.. а когда и экран заканчивается.. она начинает двигаться вниз экрана по кромке ) вообщем я чуть не уписался от смеха :-D когда она вниз поползла.. не дождался момента пока она весь экран заполнит.. (ползла оч долго) Вообщем то )) чем не идея такую полоску реализовать прям игре :-D думаю играющие срузу по достоинству оценят юмор программеров ) |
Re: Загрузка
да, согласен, прикольно !!
|
Re: Загрузка
Я написал статью о полосках загрузки, которая применима и к LoadingBar. Как тока журнал обновится, Матвей обещал опубликовать.
|
Re: Загрузка
у мну просто есть функция которая вызывается после каждой загрузки
ресурса .... и есть общее количество етих ресурсов и все :) |
Re: Загрузка
jimon, показывай !! :)
|
Re: Загрузка
Если бы блиц мог создавать таймеры (например как у визуальных языков), былобы все просто...
А так прийдется разделить загрузку на части, чтобы создать строку статуса, допустим зарузил все кубики обновил статус - это 50% остались еще шарики, и т.д. Я бы просто вывел картинку, текст и музыку (допустим миди чтоб не тратить цпу). |
Re: Загрузка
Цитата:
самому можно же зделать таймеры !! |
Re: Загрузка
Ты недочитал - (например как у визуальных языков).
Имеется ввиду таймер-прерывание. Ставишь ему интервал скажем 1000мс и его функция (в д. случае обновление статуса) вызывается независимо ни от каких процессов 1 раз в секунду, на блице таких нет, а жаль... |
Re: Загрузка
а что кто может кратко рассказать о программировании для двух потоков? (можем отступить от B3D, но тогда только пинципы, а то с семантикой языков бедновато)
|
Re: Загрузка
Принципы просты - объектно ориентированное программирование :)
Если в блице программа идет от строчки к строчке, то в ооп делаются прерывания на какие-то события. Блиц тоже частично ооп, но не так продвинут по этой части как допустим его коллега вижуал бэйсик. Где-то даж тема была, что есть dll позоляющая грузить ресурсы отдельным потоком, но ограничений много и неудобств. |
Re: Загрузка
"в ооп делаются прерывания на какие-то события" сокраментальная для меня фраза, вот где мезаханизм то )) thnks
|
Re: Загрузка
При чем здесь прерывания на какие-то события? Бмакс ООП язык, а Б3Д - не ООП. вот и всё.
|
Re: Загрузка
Noah, юзай goto !! :)
|
Re: Загрузка
Кстати goto ) никогда не пользовал
Я о прнципиальной схеме выполнния кода: не ООП - последовательное выполнение ООП - есть контролирующая процесс оболочка реализцющая возможность прерываний (на сколько понял; поправьте если что или отошлите к инфе раскрывающей этот вопрос) |
Re: Загрузка
|
Re: Загрузка
блин, "идиоты !"
возможность программы работать с несколькими потоками ну скажите мне хоть одну вещь которая относится здесь К ООП ?! блин, ваще ... в блице3д просто нету встроенных средств управления мультипоточностью а так мультипоточность не зависит от возможностей языка на прямую :) что у меня : в TGui запихан такой код : Код:
Field LoadingCurrentState% 1) Инит екрана 2) создает ресур манагер 3) грузит ресурсы нужные для ядра :) 4) создает гуи 5) создает екран загрузки 6) все остальное просто при каждой загрузке ресурса стоит вызов Gui.LoadingBar() и все |
Re: Загрузка
Цитата:
|
Re: Загрузка
ну блин, есть же либа для б3д - для мультиипоточности.
авоторы чо, зря ночами неспали разрабатывая сие чудо? и уже в отдельной, выведенной в отдельной поток ф-ии пишеш чо те нада. |
Re: Загрузка
" При чем здесь прерывания на какие-то события? "
Как причем...? Привсем. Это главный принцип ооп. Есть событие - есть работа, нет - цпу простаивает. В ооп все функции (окна, кнопки, поля ввода и .т.д.) явл. грубо говоря отдельными прогами (объектами) делящими между собой цпу и общие переменные, и вызываемые ТОЛЬКО по событию (нажатие кнопки, открытие сдрома, истечение интервала таймера). Прерываение.. не имею ввиду int , и на самом-то деле ни каких параллельных потоков нет... просто время проца делится между всеми поочереди. |
Re: Загрузка
to HolyDel, что за лыба ??
дай ссылу плиз !! |
Re: Загрузка
:) Хотя бы название
всёж не спроста у меня голова на плечах ) |
Re: Загрузка
Цитата:
|
Re: Загрузка
блин, была такая либа. что то вроде BlitzThreads или BlitzMultiThreads или вообще не Blitz. Но я ее потерял, щаз поискал в нети и не нашел :(. Кто знает где, скажите. Или куда нить залейте если у вас она есть.
|
Re: Загрузка
Вложений: 2
ВОт, вроде оно. Названия совпадают.
|
Re: Загрузка
dimanche13, ок, это принцип событийного ооп (имел ввиду визуальные языки).
А вот про то как сделать таймер в блице - это уже интересно. Такая задача (есть мысль написать что-то типа муз. секвенсора): - у меня есть кусок музыки, он скажем 1627мс времени проигрывания. - нужно крутить его покругу, петлей, причем +- 5..15 мс портит все воспроизведение, петля звучит прерывисто. Вопрос как сделать таймер на блице чтоб он вызывался каждые 1627мс? |
Re: Загрузка
Function LoadSound:TSound( url:Object,loop_flag=False ) посмотри еще другие функции в модуле Audio и в хелпе. Может обойдешься и без таймера. Function CreateTimer:TTimer( hertz#,event:TEvent=Null ) а вот и таймер, смотри модуль Timer и снова Хелп.
|
Re: Загрузка
Не.. с саунд функциями только если с wav семплами можно, мп3 дает паузы на концах, с ними только вручную мс указывать.
А вот модуль Timer, чего-то несталкивался - это отдельная длл. Чего-то в хэлпе не нахожу...? |
Re: Загрузка
я говорю о BlitzMax там ищи Help/Modules/Events/Timers]
ах да и еще, если пишешь какую-то функцию и она подсвечена желтым, то есть ключевая, то единожды нажав на Ф1 получаешь ее протатип снизу, а при вторичном нажатии в первой вкладке Хелп открывается помощь по ней. |
Re: Загрузка
А... я BlitzMax-то не использую, только Blitz3D и там мне вот больше всего не хватает таймера.
Интересно можно длл написать такую допустим пишешь: Function UpdateStatus() Print current_job End Function ;всеравно ведь тут return наверно нет разници кто фызывает д. функцию сам блиц или из длл? потом типа: addr = GetAddr (UpdateStatus);взять адрес фн. CallOnTimer(addr,interval=1000); и повесить на какой-то таймер Вот кто бы написал... |
Re: Загрузка
to Damp: не вижу особой потребности в написании этой dll !!
это вполне можно реализовать на blitz3D, но естественно немного другим способом !! |
Re: Загрузка
А я вот не пользуюсь Б3Д... Но уверен, что там есть нечто подобное, поищи внимательнее. Полазь по оруму и зайди на пп http://blitz.pp.ru
|
Re: Загрузка
|
Re: Загрузка
Неа, нет таймеров все просмотрел уж не раз...
--- Может кто знает как в блиц3д получить адрес функции? Это мне сложнее всего, а остальное может и сам бы написал. |
Re: Загрузка
Цитата:
|
Re: Загрузка
Да... это несовсем таймеры, как обычно их понимают.
Там просто вызываемые из цикла функции которые сверяются по часам, но в какой момент они вызываются ни кто не гарантирует... Смотри, допустим прога стала грузить большой файл LoadMesh, и грузит его 10сек, вот и хана всем тем таймерам, они получат управление только через 10сек, а за это время... вся музыка уж похерится :) |
Re: Загрузка
Цитата:
выше ж написали что музыка идет другим потоком и с ней ничего не случится !! |
Re: Загрузка
Дык я же типа мини фрутилупса хочу написать :)
Этоб реально была экономия 50% тафика игры, т.к. сэмплы очень маленькие, а вот миксы огогоооо... |
Re: Загрузка
IGR, Damp имеет в виду систему прерываний
|
Re: Загрузка
ясно, ссори, сразу не врубил !! :)
|
Re: Загрузка
у меня только один совет: читай раздел FAQ! все, что ты спрашиваешь давно уже описано не один раз. ты видимо новичек. так вот специально для тебя умные люди форума сего написали много всего хорошего. и тебе не мешало бы это почитать прежде чем постить кучу постов.
если же после прочтения у тебя все же остануться вопросы, то можешь стучаться мне в аську или на мыло. я тебе все разъясню, как думаю и любой другой проггер со стажем. |
Часовой пояс GMT +4, время: 20:17. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot