Загрузочный экран
Всем привет.
Собственно, хочу сделать загрузочный экран. А то пока куча изображений вместе с музыкой загрузятся - 5-6 секунд чёрного монитора. Некрасиво. Все ресурсы загружаю перед главным циклом через функции, которые разнесены по разным bmx-файлам. При таком раскладе, ясен пень, сделать загрузочный экран не представляется возможным. Тогда я подумал (видимо, плохо) и занёс функции загрузки в главный цикл, с дополнительной переменной, чтобы всё это дело загрузилось всего один раз, плюс вывел текст, мол, загружаемся. Так же имеется переменная текущего "экрана" (ну, там, -1 = загрузка, 0 = меню, 1 = опции, и т. д.), по которой всё и проверяется. Собственно, у меня такая мысль, что я что-то (если не всё) делаю не так: Код:
Include "_loadimgs.bmx" Заранее спасибо. |
Ответ: Загрузочный экран
Варианты делания:
1. многопоточность (стоит ли оно того - хз) 2. ресурс-менеджер, или подобие его, в котором перед загрузкой определяются нужные для загрузки ресурсы. тут хоть не побайтово будет, но всё-таки единица загрузки будет поменьше (кроме музыки). а для больших файлов как вариант - открывать поток, читать из него порциями по сколько-то килобайт, проматывая ползунок загрузки, а потом из полученных данных собирать объекты. 3. сделать циклическую анимацию загрузки и вызывать её перерисовку после каждого нового загруженного ресурса. Ещё, в LoadAllImgs(), LoadAllMsc() - слово All настораживает. Грузить лучше по мере необходимости. И ещё: LoadAllImgs() 'по окончанию загрузки - LoadingTemp = 0 и Loading = 1 где-то внутри функции менять глобальные флаги загрузки, да ещё и два штуки, это видится (мне) не лучшим вариантом. Я б сделал переменную, хранящую статус загрузки, и константы статусов по желанию: Global loadingState% const LOADING_NONE% = 0 const LOADING_IMAGES% = 1 const LOADING_SOUNDS% = 2 const LOADING_SOMETHING% = 3 и при загрузке пишешь loadingState = LOADING_IMAGES а в твоём коде загрузка идёт последовательно всего и сразу, поэтому даже статусы не нужны, пишешь перед главным циклом LoadAllImgs() LoadAllMsc() да и всё. Ещё на всякий случай: функции Flip() и Cls() и прочие можно использовать и вне главного цикла, главное чтобы после команды Graphics(). |
Ответ: Загрузочный экран
Вообще эта тема поднимается чуть ли не каждый месяц
site:forum.boolean.name blitzmax загрузка |
Ответ: Загрузочный экран
Цитата:
Теперь другого рода проблема. Разрешение экрана. Во-первых, как его узнать при запуске приложения? Я тут глянул по форуму, на эту тему всё исключительно по Blitz3d. И библы, и примеры. Мож кто тыкнёт, куда надо или подскажет? Ну и второе - как сделать, чтобы изображения растягивались при смене разрешения? У меня моник 1600х900 и сейчас, если поставить 800х600 фон, например, показывается частично. А мне надо, чтобы он скалировался под разрешение и при этом выглядел более-менее прилично. |
Ответ: Загрузочный экран
SetVirtualResolution?
|
Ответ: Загрузочный экран
Randomize
И? Блиц на эту функцию никак не отзывается. Или я туплю?.. |
Ответ: Загрузочный экран
В материалах блитцмакса есть описание этой функции, значит второе.
Цитирую: "Функция позволяет вам устанавливать "виртуальное" разрешение, не зависящее от графического, которое также позволяет спроектировать приложение для работы в установленном (фиксированном) разрешении, скажем 640 на 480, а также запускать его при любом графическом разрешении." |
Ответ: Загрузочный экран
Ладно, с этим я тоже разобрался. Разрешение узнаю через перебор всех доступных графических режимов и беру последний, все изображения скалирую по формуле ширина_экрана/ширина_картинки. Но появилась ещё одна проблема.
Объявляю переменную типа float. В ней произвожу деление чисел 800 / 1600. Потом вывожу результат на экран. А он оказывается равен 0 (т. е. именно 0.000000). Причём если делить нацело, то всё прекрасно отображается (800 / 2 = 400.000000). Если делить с дробным остатком, то он обнуляется. Причём если просто присваивать переменной дробное число (к примеру, 0.5), она прекрасно его выводит. Я даже отдельную прогу написал, состоящую ровно из двух строчек: Код:
i# = 800 / 1600 |
Ответ: Загрузочный экран
i# = 800.0 / 1600.0
Print i |
Ответ: Загрузочный экран
самый простой способ - это расширить TStreamWrapper
|
Часовой пояс GMT +4, время: 08:15. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot