Всем привет.
Собственно, хочу сделать загрузочный экран. А то пока куча изображений вместе с музыкой загрузятся - 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 )
Прошу помощи. В идеале хотелось бы сделать как во флеше - побайтово узнавать, сколько уже от всех ресурсов загрузилось и, собственно, выводить это на экран. Совсем чудесно будет, если тут кто-нибудь кодом с пояснениями поделится. Хотя сойдёт и что-нибудь попроще, совет, например. Мне хотя бы сам принцип узнать, как это вообще делается.
Заранее спасибо.