mediaplayer如何实现循环播放?(0分)

G

gyzhen

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.OnNotify(Sender: TObject);
begin

if MediaPlayer1.Mode = mpStopped then

MediaPlayer1.Play;

MediaPlayer1.Notify := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

MediaPlayer1.Close;
MediaPlayer1.FileName := 'hit.mid';
MediaPlayer1.Open;
MediaPlayer1.Play;
MediaPlayer1.Notify := True;
end;
 
1.MediaPlayer1.Notify := True;应该放在Play的前面
2.OnNotify事件中的判断不对会出问题的
 
好像还是不行啊,怎么办?
 
我曾经问过与楼主问的一模一样的问题,最后不了了之。无奈,我就用了一个第三控件。
我以为这是一个简单的问题,可就是解决不了。
 
留下email发源代码
 
oldice@163.net
请寄给我一份,谢谢。
 
也请给我一份谢谢你了~!!
dx169@tom.com
 
gyzhen@fescomail.net
谢谢
 
johnd766@163.com
谢谢
 
chenbo_qyds@163.com
thank you!
 
gyzhen, 你的mail被退回来了,有没有其他邮箱啊?
 
我是这样实现的,利用定时器,通过MediaPlayer1的Position和Length比较,
判断播放是否完毕。然后Rewind就行了,很简单啊。代码如下
procedure TForm1.Timer1Timer(Sender: TObject);
begin

try
Gauge1.Progress :=MediaPlayer1.Position;
statusbar1.Panels[0].Text := IntToStr(MediaPlayer1.Position);
if MediaPlayer1.Position = MediaPlayer1.Length then
//判断是否播放完毕
begin

MediaPlayer1.Rewind;
number := number + 1;
//全局变量 (_Music) 是一个动态数组,存放曲目的路径
if number >= length(_Music) then
begin
StatusBar1.panels[1].Text :='播放完毕!';
StatusBar1.panels[2].Text :='';
exit;
end else

begin

Atcive(_Music[number,0]);//Atcive是一个自定义播放的过程
StatusBar1.panels[2].Text :='正在播放第'+IntToStr(number+1)+'首曲目!';
selectatctive :=true;
end;

end;

except
exit;
end;

end;

上面的代码不要照抄就行,我只是说明了循环播放的的原理而已。看你自己的了。
如有问题,发邮件到我邮箱好了。前段时间我刚刚写了个播放器。

 
gyzhen1@163.com
 
procedure TfrmMain.MediaPlayerNotify(Sender: TObject);
begin

Case MediaPlayer1.NotifyValue of
nvSuccessful :
begin

MediaPlayer.StartPos:=MediaPlayer.Start;
MediaPlayer1.Notify := True;
MediaPlayer1.Play;

end;

end
end;

procedure TfrmMain.PlayMedia(FileName:string);
begin

MediaPlayer1.Close;
MediaPlayer1.FileName :=FileName;
MediaPlayer1.Open;
MediaPlayer1.Notify := True;
MediaPlayer1.Play;
end;


这是从我以前一个程序中提取出来的,绝对满足你的要求!
拿分来:)
 
我也要一份
谢了
nydelphi@21cn.com
 
ftp://61.152.210.98/Scr.rar
 
顶部