Показать сообщение отдельно
Старый 29.12.2010, 02:39   #1
Greenstyler
AnyKey`щик
 
Регистрация: 18.10.2009
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Загрузочный экран

Всем привет.

Собственно, хочу сделать загрузочный экран. А то пока куча изображений вместе с музыкой загрузятся - 5-6 секунд чёрного монитора. Некрасиво.
Все ресурсы загружаю перед главным циклом через функции, которые разнесены по разным bmx-файлам. При таком раскладе, ясен пень, сделать загрузочный экран не представляется возможным. Тогда я подумал (видимо, плохо) и занёс функции загрузки в главный цикл, с дополнительной переменной, чтобы всё это дело загрузилось всего один раз, плюс вывел текст, мол, загружаемся. Так же имеется переменная текущего "экрана" (ну, там, -1 = загрузка, 0 = меню, 1 = опции, и т. д.), по которой всё и проверяется. Собственно, у меня такая мысль, что я что-то (если не всё) делаю не так:
Include "_loadimgs.bmx"
Include "_drawimgs.bmx"
Include "_loadmusic.bmx"

Global UserQuit = False
Global Screen = -1 ' Та самая переменная "экрана"

Global Loading = 0
Global LoadingTemp = 0

Graphics 1600, 900, 1
HideMouse()
SeedRnd( MilliSecs() )
SetBlend( ALPHABLEND )

Repeat

	If Screen = -1 Then
	
		DrawText( "Загружаем...", 15, 15 )
	
		If ( Loading = 0 ) And ( LoadingTemp = 0 ) Then
			LoadingTemp = 1
			LoadAllImgs() 'по окончанию загрузки - LoadingTemp = 0 и Loading = 1
		EndIf
		If ( Loading = 1 ) And ( LoadingTemp = 0 ) Then
			LoadingTemp = 1
			LoadAllMsc() ' здесь после загрузки Loading = 0 и Screen = 0
		EndIf
	
	EndIf
	
	If Screen = 0 Then
	
		DrawAllImgs()
		
		If GlobalMusicTemp = 0 Then
			GlobalMusicTemp = 1
			PlayMsc()
		EndIf
	
	EndIf

	If KeyHit( key_escape ) Then UserQuit = True

Flip
Cls

Until ( AppTerminate() ) Or ( UserQuit = True )
Прошу помощи. В идеале хотелось бы сделать как во флеше - побайтово узнавать, сколько уже от всех ресурсов загрузилось и, собственно, выводить это на экран. Совсем чудесно будет, если тут кто-нибудь кодом с пояснениями поделится. Хотя сойдёт и что-нибудь попроще, совет, например. Мне хотя бы сам принцип узнать, как это вообще делается.
Заранее спасибо.
(Offline)
 
Ответить с цитированием