连续播放音乐文件的问题(40分)

  • 主题发起人 主题发起人 bestluo
  • 开始时间 开始时间
B

bestluo

Unregistered / Unconfirmed
GUEST, unregistred user!
我想选择几个mp3,把其文件按顺序保存到listbox中,然后在按顺序播放,但不知为什么其只能够播放一首.
我的代码如下:
//音乐之间间隔的长度
procedure TForm1.Timer1Timer(Sender: TObject);
begin

inc(i);
if i=5 then

timer1.Enabled :=false;
end;


//播放音乐的长度
procedure TForm1.Timer2Timer(Sender: TObject);
var
m:integer;
begin

for m:=0 to lengthdo

begin

inc(j);
end;

timer2.Enabled :=false;
timer1.Enabled :=true;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin

i:=0;
j:=0;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
filename:string;
count,m:integer;//count:ÉùÒôÎļþÊý£¬i:ÓÃÓÚÑ­»·
begin

count:=listbox1.Count;
if count=0 then

begin

showmessage('ûÓÐÑ¡ÔñÒôƵÎļþ');
exit;
end;

//循环播放音乐
for m:=0 to count-1do

begin

filename:=listbox1.Items;
MediaPlayer1.FileName :=filename;
MediaPlayer1.Open;
MediaPlayer1.Play;
//开始播放音乐
length:=MediaPlayer1.Length div 100 +1;
timer2.Enabled :=true;
timer2.OnTimer(timer2);
end;

end;

 
使用一个Timer,在OnTimer中这样判断:
if Mediaplayer1.Position >= MediaPlayer1.Length then

mediaplayer播放下一个文件,即可。
 
我也很想知道这个问题
 
to miaofeng:
可否写的详细些,谢谢
 
查一查以前的帖子吧。
很多的。
if Mediaplayer1.Position >= MediaPlayer1.Length then

这个是对的。
不过要防在mediaplayer的notify事件你面去。
至于这么样播放下一首歌,留给你自己去想
 
就是在 OnTimer 中时时检查播放状态,当Mediaplayer1.Position >= MediaPlayer1.Length 成立时说明当前文件已经播放完,那么就给Mediaplayer1赋新的播放文件,如果你用ListBox做播放列表,那就让列表索引增加,然后让下一项作为当前项,并把新项的内的文件信息赋给Mediaplayer1,大体思路是这样的。
 
[blue][/blue]同意楼上方法,但建议你用filelistbox,其余的和楼上的一样。[8D]
 
MIDAEPLAYER不是有个notify事件吗?在这个事件中判断一下MIDAEPLAYER属性中的一个枚举变量值是否为STOP就可以了,那个变量名记不清了,查了告诉你!
 
多人接受答案了。
 
后退
顶部