2 Жека:
channel Локальна в теле функции, но её значение возвращается через return - так что, ради каких чертей ты её убрал?
А вот юзание глобальных переменных ( ну уж по крайней мере - здесь) - плохой стиль.
SeedRnd(MilliSecs())
While Not (KeyHit (1))
If ChannelPlaying (channel) = 0 SelectRandMusic("music")
Wend
End
Function SelectRandMusic(DIR$)
Local counter%=0
local channel%=0
Local dir_h%=ReadDir(DIR$)
While True
file$=NextFile$(dir_h)
If Upper$(Right(file$,3))="MP3"
counter=counter+1
EndIf
If file$="" Exit
Wend
CloseDir dir_h
Print "files="+counter
Local iR%=Rand(1,counter%)
If Not counter Return False
counter=0
dir_h%=ReadDir(DIR$)
While True
file$=NextFile$(dir_h)
If Upper$(Right(file$,3))="MP3"
counter=counter+1
If counter%=iR
Print "select - "+IR+" = "+file$
channel=PlayMusic(DIR$+"\"+file$)
Exit
EndIf
EndIf
Wend
Return channel
End Function
2 Dizels:
не понял - как это: музыка играет,а игра не грузится?
надо полагать - так:
вычлени цикл из пример Жеки в функцию а-ля:
Function UpdateMusic(channel)
If ChannelPlaying (channel) = 0 channel=SelectRandMusic("music")
return channel
End Function
и просто где-нибудь в главном цикле твоей программы (не мудурствуя лукаво - перед RenderWorld) напиши вызов приведённой выше ф-ции
;.....
channel=UpdateMusic(channel)
;....
RenderWorld
И вот теперь уже позаботься об области видимости переменной channel -
либо объяви её перед главным циклом
либо уж пихай в глобал