Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Определить, когда TMediaPlayer закончил проигрывание

Delphi , Компоненты и Классы , TMediaPlayer

Определить, когда TMediaPlayer закончил проигрывание

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure TForm1.FormCreate(Sender: TObject);
 begin
   MediaPlayer1.Notify   := True;
   MediaPlayer1.OnNotify := NotifyProc;
 end;

 procedure TForm1.NotifyProc(Sender: TObject);
 begin
   with Sender as TMediaPlayer do
    begin
     case Mode of
       mpStopped: {do something here};
     end;
     //must set to true to enable next-time notification 
    Notify := True;
   end;
 end;


 { 
  NOTE that the Notify property resets back to False when a 
  notify event is triggered, so inorder for you to recieve 
  further notify events, you have to set it back to True as in the code. 
  for the MODES available, see the helpfile for MediaPlayer.Mode; 
}

Преобразуем контент в русский язык:

Процедура NotifyProc - это callback-функция, которая вызывается при изменении состояния компонента TMediaPlayer. В этом случае событие OnNotify установлено на NotifyProc, что означает, что оно будет вызываться каждый раз, когда свойство Notify компонента TMediaPlayer устанавливается в значение True.

Процедура NotifyProc проверяет текущий режим TMediaPlayer с помощью свойства Mode и принимает различные действия в зависимости от этого режима. В этом конкретном примере, когда режим равен mpStopped, это означает, что воспроизведение остановлено.

Чтобы определить момент, когда воспроизведение действительно закончилось, можно установить флаг или переменную для отслеживания того, продолжается ли воспроизведение. Вот обновленная версия процедуры NotifyProc:

procedure TForm1.NotifyProc(Sender: TObject);
begin
  with Sender as TMediaPlayer do
  begin
    case Mode of
      mpStopped:
        begin
          // Воспроизведение остановлено
          IsPlaybackPlaying := False;
        end;
      mpPlaying:
        begin
          // Воспроизведение продолжается
          IsPlaybackPlaying := True;
        end;
    end;
    Notify := True;  // Должно быть установлено в true для включения следующего уведомления
  end;
end;

В обновленной версии мы добавили флаг IsPlaybackPlaying, который отслеживает, продолжается ли воспроизведение. Когда режим равен mpStopped, мы устанавливаем IsPlaybackPlaying в значение False. Когда режим равен mpPlaying, мы устанавливаем IsPlaybackPlaying в значение True.

Затем можно использовать этот флаг для определения момента, когда воспроизведение действительно закончилось:

procedure TForm1.FormCreate(Sender: TObject);
begin
  MediaPlayer1.Notify := True;
  IsPlaybackPlaying := False;  // Инициализируем флаг воспроизведения
end;

// ...

if not IsPlaybackPlaying then
  begin
    // Воспроизведение закончилось, выполните что-то здесь...
  end;

Обратите внимание, что это подход зависит от вызова процедуры NotifyProc при изменении состояния TMediaPlayer. Если вы используете другой метод для управления воспроизведением (например, через таймер или ручное управление), вам может потребоваться адаптация вашей логики.

Определить момент завершения воспроизведения медиафайла в TMediaPlayer с помощью свойства Notify и процедуры OnNotify.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TMediaPlayer ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 16:15:18/0.0038518905639648/0