Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MediaPlayer


Маришка ©   (2003-04-23 09:55:00) 

Привет. Подскажите, пожалуйста. Я использую MediaPlayer. Проговаривается определенный текст.
Если я не ставлю mp1.Wait:=true, то говориться самая последняя фраза. А если ставлю, то пока программа разговаривает нельзя нажать ни на какую кнопку программы.
Не знаете как сделать так, чтобы говорились все фразы и можно было нажать на любую кнопку?

MP1.Open;
try
mp1.Wait:=true;
mp1.Play;
finally
mp1.Close;
end;


Плохой человек   (2003-04-24 22:43:00) [1]

>Application.ProcessMessages не помогает?

TMediaPlayer может играть звук и в заднем фоне, ничего лепить не надо.


Evgeny V   (2003-04-24 06:48:00) [2]

Проблема в том, что когда ты ставишь mp1.Wait:=true; то прога ждет окончания проигрывания файла(mp1.Play;), поэтому все висит, если поставить mp1.Wait:=false;, то mp1.Play вывалится сразу, не ожидая завершения проигрывания файла и ты в своем коде , который привела успешно закроешь аудио устройство, не проиграв все. Поэтому завпустив в этом случае mp1.Play, не надо сразу закрывать устройство, контролировать сколько проиграно можно по свойству Position. Пример на си правда но понятен:
MediaPlayer1->FileName = "D:\WINAPPS\SOUNDS\CARTOON.WAV";
MediaPlayer1->Open();
MediaPlayer1->EndPos = MediaPlayer1->TrackLength;
MediaPlayer1->FileName = "D:\WINAPPS\SOUNDS\CARTOON.WAV";
MediaPlayer1->Open();
MediaPlayer1->Wait=false;
MediaPlayer1->TimeFormat = tfSamples;
MediaPlayer1->Open();
MediaPlayer1->MediaPlayer1->Play();
while(MediaPlayer1->Position < MediaPlayer1->EndPos)
Apllcation->ProcessMessages();
MediaPlayer1->Close();

Лучше конечно проверку делать по таймеру, так мне кажется, настроить его например на 100 или 500, и тогда не нужен Apllcation->ProcessMessages(); и цикл, проверила, не закончило играть, запустила таймер снова, закончило, остановила таймер, закрыла аудио устройство.



Маришка   (2003-04-23 15:20:00) [3]

>Дмитрий
А что это такое?


Дмитрий К.К.   (2003-04-23 14:42:00) [4]

Application.ProcessMessages не помогает?


Маришка   (2003-04-23 14:13:00) [5]

>Дмитрий
Ни на какую кнопку программы


Дмитрий К.К.   (2003-04-23 12:18:00) [6]

Ни на какую кнопку программы или ни на какую кнопку медиаплейера?


Дмитрий К.К.   (2003-04-23 11:29:00) [7]


> Маришка © (23.04.03 09:55)
> А если ставлю, то пока программа разговаривает нельзя
> нажать ни на какую кнопку программы.


Почему нельзя? Кто-то стоит рядом и связывает руки? ;)


Наверх

Титульная страница Поиск, карта сайта Написать письмо