Создаем экран загрузки (Loader)

Сообщение Создаем экран загрузки (Loader)
» 26 мар 2013, 04:56

Создаем новый, пустой проект.
Изображение

Выставляем опцию "Use Loader layout" на YES.
Изображение

После этого, любой первый уровень становится экраном загрузки! Что значит первый? А всё очень просто! Первый уровень мы выбираем опять же в настройках проекта:
Изображение
У меня это просто "Layout 1". Вы можете создать over 9000 лэйаутов, но выбрать первым только один - он и будет являться экраном загрузки. При таком раскладе настройки стандартного экрана загрузки будут проигнорированы:
Изображение

Вот в принципе и всё! Теперь при загрузке игры будет отображено только то, что находится на первом лэйауте.
Когда я только начинал это тестировать - у меня ничего не работало. При запуске проекта - все равно сначала появляется стандартный загрузчик! Что за фигня? - Всё оказалось просто! Это работает только в экспортированном проекте. Т.е. не получится это проверить просто нажав F5. Так что имейте в виду!

Ну, ок, при загрузке нам показывают первый лэйаут... и что? Как сделать красивый прогресс-бар? В этом нам поможет выражение loadingprogress - оно возвращает прогресс загрузки от 0 до 1 с сотыми долями.
Таким образом, чтобы получить прогресс в процентах от 0 до 100% - нужно написать такое выражение: round(loadingprogress*100)
Выражение round() - округляет число до наибольшего целого. Это позволяет нам видеть 0..1..2..3, вместо 0,420...0,980...1,2...3,14 и т.д.
Давайте уже наконец посмотрим как это выглядит на практике!

Создадим объект - Текст.
Изображение
Изображение

Создадим событие, которое каждый тик будет задавать текст со значением loadingprogress.
Изображение

Если вы нажмете сейчас F5 - то увидите уровень с одним лишь текстом: "1"
Изображение
Не пытайтесь экспортировать - результат от этого не изменится, т.к. у нас во-первых нет уровня на который нужно переходить после загрузки, а во вторых наш проект настолько мал, что загружается быстрее чем вы сможете это заметить.

Для начала улучшим наш вывод текста. Туда, где мы писали loadingprogress, пишем: round(loadingprogress*100)&"%"
Теперь вывод будет от 0 до 100 и появится знак процента %.
Если мы сгорая от любопытства снова нажмем F5 - то увидим текст: "100%".

Это самое основное, что нужно знать! Всё крутится вокруг loadingprogress. Можно задавать размеры объектов исходя из loadingprogress, можно сделать вывод каких-то эффектов исходя из значения loadingprogress и т.п. Включаем фантазию! НО не забываем, что это не уровень, а экран загрузки... т.е. нужно использовать ничтожно малые элементы, чтобы сам этот экран загружался рекордно быстро.
Если вы будете использовать на нем много графики с дамами и преферансом - то до того как появится экран загрузки, пользователь будет наблюдать просто черный экран и вполне вероятно решит, что игра зависла. А если интернет еще медленный? В общем, сильно понтоваться здесь не стоит.

Ну, давайте сделаем простейшую полосу загрузки чтоли...
Создаем спрайт.
Изображение

Задаем ему маленький размер. Я сделал 16х16.
Изображение

Заливаем любым цветом. Я взял красный.
Изображение

Передвигаем его центр влево.
Изображение
Это нужно для того, чтобы при изменении величины Windth (ширина объекта) - он растягивался не с середины (симметрично от середины), а именно слева на право.

Передвигаем его куда-нибудь левее...
Изображение

Теперь идем в события и создаем следующее:
Изображение
Т.е. в данном случае мы тупо приравниваем ширину спрайта к проценту загрузки. Запускаем проект и видим:
Изображение

Теперь нужно создать событие, которое перенесет нас в игру, если она полностью загрузилась.
Всё просто. Создаем новый лэйаут.
Изображение

С2 спросит, нужен ли вам отдельный полигон событий для этого уровня? Да, нужен. Я предпочитаю разделять события для Лэйаутов.
Изображение

Создали? Появился Layout 2? - Ок, идем в события первого уровня и создаем там следующее:
Изображение

Теперь при окончании загрузки - нас выкинет на "Layout 2". В данном примере вы ничего не увидете, т.к. всё происходит моментально. Вот пример лоадера в моей игре: http://siriusx.ru/medved-i-shlyuxa-game.html (18+)
Здесь точно так же я сделал текст с процентами и добавил маленький спрайт посредине, задав ему поведение Rotate.

Исходник урока прилагаю.
loader.capx
(5.52 КБ) Скачиваний: 1057
Последний раз редактировалось virusfun 02 апр 2013, 13:23, всего редактировалось 2 раз(а).
Большое спасибо всем, кто пишет мне респекты в ЛС! Очень рад, что до сих пор мои советы, примеры и уроки пользуются спросом... Но, к сожалению, я уже давно не занимаюсь разработкой игр и программированием вообще, поэтому я уже не лучший советчик в этом деле, да и времени совсем нет. Здесь на форуме я уже практически не бываю, но всегда открыт для общения в ВК: vk.com/virusfun
Но хоть меня здесь почти нет, мне все равно будут приятны ваши отзывы и плюсы [+]
Аватара пользователя

Игродел
Сообщений: 893
Я тут с 23 сен 2012, 14:51
Откуда: Хабаровск