Re: Как проиграть звук один раз?
Молодец. Желаение помогать другим похвально.
Необходимо тем не менее внести полную ясность в вопрос.
0. Чтоб проиграть звук один раз, достаточно один раз вызвать
PlaySound( ХендлЗагруженноговЗвука ) - и ничего более
1. Если речь идёт о размещении конструкции
[blitz]If ChannelPlaying(channel_sound)=0 Then channel_sound=PlaySound(sound)[/blitz] в цикле (зацикленные музыкальные отрывки, стрельба очередями, звук двигателя и т.п.) то термин "один раз" здесь очевидно не вполне уместен.
2. Если нужно просто и незамысловато зациклить звук, можно сделать это интуитивно: командой LoopSound()
3. Наконец, если LoopSound() не обеспечивает необходимой тактической гибкости, то вызывать ChannelPlaying() следует не слишком часто, т.к. это неизбежно приведет к жутЬким тормозам.
4. В итоге, конструкция приобретает приблизительно такой вид:
[blitz]
...
IF CheckChannelDelay<Millisecs() THEN
CheckChannelDelay=Millisecs()+DelayInMillisecs
IF ChannelPlaying(channel_sound)=False THEN channel_sound=PlaySound(sound)
END IF
...[/blitz]
P.S. Мы не упоминаем возможность циклить что-либо с помощью PlayMusic() вследствие нестабильности и тормозности сей команды.
|