3

私は MediaPlayer1 という名前の TMediaPlayer を持っており、ファイル (曲) を開いて再生します。今私の問題は、プログラムが停止するまで曲を繰り返す必要があることです。

アイデアは、フォームがアクティブになり、フォームが閉じられるまで指定された曲を繰り返すというものです。

MediaPlayer1.Filename := 'filename';

それからそれはそれを開きます

MediaPlayer1.Open;

それからそれはそれを再生します

MediaPlayer1.Play;

これで曲は再生されますが、終了したら、フォームが閉じられるまでもう一度(繰り返し)再生したいと思います。

私はDavid Heffernanが言ったことを試しましたが、うまくいきません.私は何か間違ったことをしたと思います.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MPlayer, StdCtrls;

type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    Label1: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
 mediaplayer1.FileName:='E:\it project\mario.mid';
 mediaplayer1.Open;
 mediaplayer1.AutoRewind:=true;
 mediaplayer1.Play;
 mediaplayer1.Notify:=true;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if MediaPlayer1.NotifyValue=nvSuccessful then begin
    MediaPlayer1.Play;  
    MediaPlayer1.Notify := True;
  end;
end;
end.
4

2 に答える 2

7

オートリピートを自分で整理する必要があります。

OnNotifyメディア プレーヤーのイベントを作成します。これは曲が完了すると発火します。

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if MediaPlayer1.NotifyValue=nvSuccessful then begin
    //restart the song
    MediaPlayer1.Play;  
    MediaPlayer1.Notify := True;//ensures we are notified when song completes
  end;
end;

曲を開始するコードは次のようにする必要があります。

MediaPlayer1.AutoRewind := True;//for obvious reasons
MediaPlayer1.Play;
MediaPlayer1.Notify := True;//ensures we are notified when song completes
于 2012-09-29T21:41:47.243 に答える
-1

TMediaPlayer を使用してください: http://docwiki.embarcadero.com/CodeExamples/en/MediaPlayer_%28Delphi%29

于 2012-09-29T20:40:33.293 に答える