Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать экран загрузки в PowerDraw?


Гамомака ©   (2004-12-24 05:39:00) 

Нужно, чтобы при загрузке файлов игры появлялся экран с анимированной заставкой... Все работает, но...

Пользую стандартный таймер из комплекта - PowerTimer - весь код обработки и расчетов сунул в его процедуру RealTime. И вот какая беда: во время загрузки таймер не работает, и поэтому я не могу поменять кадр картинки. Пробовал пихать в процедуру загрузки код типа Application.ProcessMessages и Application.OnIdle(...), но не помогает. А если вызывать PowerTimer.RealTime(...), то нужно передавать значение Delta - а его таймер должен расчитывать сам, иначе будут неправильные расчеты...

Спрашивается, как "разморозить" таймер по время распаковки файлов игры? Использование потоков и замену таймера не предлагать!


Гамомака   (2004-12-27 11:40:00) [1]

Нет, надо еще и просчитывать кадр анимации, а для этого нужно, чтобы таймер работал...

НО: Как я уже говорил, пробовал вставлять в функцию распаковки ресурсов код Application.OnIdle(nil, AppIdle), где переменная AppIdle нужна (в этом случае) просто так... И ничего не работало. И сегодня меня озарило: нужно вызывать PowerTimer.AppIdle(nil, AppIdle), и все будет работать :))
Только просто так эту процедуру не вызвать, нужно в модуле таймера (PowerTiming.pas) переместить декларацию procedure AppIdle(Sender: TObject; var Done: Boolean);из Privateв Public, чтобы ее можно было вызывать "из вне". Вот так...

Так что вопрос можно считать решенным! Не пришлось ничего менять, всем спасибо за суету :)


MeF Dei Corvi   (2004-12-27 11:14:00) [2]


> Ну да ладно, подскажите другой таймер, я его код посмотрю,
> и переделаю стандартный таймер!

Да там в принципе таймер и не нужен.

При загрузке инфы просто время от времени делай прорисовку экрана.


Гамомака   (2004-12-27 10:55:00) [3]

Просил не предлагать другой таймер, потому что тот очень удобный и хороший... Ну да ладно, подскажите другой таймер, я его код посмотрю, и переделаю стандартный таймер! Только не надо на потоках, а то многое придется переделывать не только в таймере, но и игре :)


MeF Dei Corvi   (2004-12-27 10:40:00) [4]

Не на PowerDraw пишется довольно легко. На PowerDraw - не знаю. Никогда им особенно не пользовался.


Поручик   (2004-12-26 16:36:00) [5]

О чем базар? откажись от ПоверДро.

Картинка должна рундериться постоянно! На любой тик процессора, который ничем не занят должна рендерится сцена, а какая сцена - это уже твое дело, хочещь игровая, хочешь прогрессбар анимированный.
Особо не пользовался Power'ом, но думаю что таймер надо запускать сразу, как только создается окно. F там уж рулишь с помощью какой-нить переменной типа GameState = (Intro, Menu, Level).


П7   (2004-12-26 05:19:00) [6]


> MeF Dei Corvi ©   (26.12.04 04:07) [3]

Во второй Халве, говорят, тоже сделали анимацию трёхмерную. Жутко тормозит на медленных компах... ):


> Гамомака   (26.12.04 03:19) [2]

Я, лично, не вижу у тебя игрового вопроса. Ты хочешь "разморозить" таймер. А это компонент и ничего более. Просишь не предлагать замену таймера, что само по себе - идиотизм. Если ты просто не хочешь развиваться, учиться чему-то новому, то о каких играх может речь идти? Извини, если обидел, но я так считаю.


MeF Dei Corvi   (2004-12-26 04:07:00) [7]

Но используются компоненты.
А зачем вообще юзать таймер?

P.S. Анимированная заставка во время загрузки??? По-моему - не реально, т.к. во время загрузки комп должен быть занят загрузкой, а не выводом анимации.


Гамомака   (2004-12-26 03:19:00) [8]

Почему-же? Вопрос игровой!


П7   (2004-12-24 09:43:00) [9]

Это тебе не сюда, а в компоненты нужно постить.


Наверх

Титульная страница Поиск, карта сайта Написать письмо