Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 24.05.2007, 17:58   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Как проиграть звук один раз?

В: Как проиграть звук один раз?
О: Легко! Достаточно создать переменную звука и переменную для звукового канала и присвоить каналу нужный для проигрывания звук. Делается это так:

 
sound=LoadSound("s.wav");Загружаем в переменную звук
Local channel_sound; Создаем канал для звука
If ChannelPlaying(channel_sound)=0 Then channel_sound=PlaySound(sound)
Поясняю как все это работает:
1) Создается переменная в которую загружается звук.

2) Затем объявляется переменная для звукового канала, переменная может быть и Local и Global в зависимости от того как и где вы хотите использовать канал.

3) Далее конструкцией If мы проверяем действительно ли канал находится вне проигрывания звука, если это так то присваиваем каналу проигранный звук.
Тем самым мы можем добится того что звук не будет проигрыватся раньше чем канал закончит его проигрывать, и не будет эффекта эхо за проигранным звуком.
Надеюсь все понятно.

Если что НЕ понятно то напишите сдесь, разъясню.

Надеюсь чем-то кому нибудь помог.
__________________

(Offline)
 
Ответить с цитированием
Старый 24.05.2007, 20:48   #2
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
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() вследствие нестабильности и тормозности сей команды.
(Offline)
 
Ответить с цитированием
Старый 24.05.2007, 22:42   #3
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Re: Как проиграть звук один раз?

Необходимо тем не менее внести полную ясность в вопрос.
Да я немного закрутил. Но спасиб за дополнение
__________________

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
звук для C# .NET/XNA Dream С# 27 16.01.2010 22:29
3D звук. Crystal 3D-программирование 20 25.11.2009 08:22
Звук Crystal 3D-программирование 11 13.09.2007 17:02
Как проиграть файл с заставкой в avi формате Astranavt 3D-программирование 3 22.01.2007 09:03
Звук impersonalis Болтовня 0 24.03.2006 19:51


Часовой пояс GMT +4, время: 02:31.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com