用mediaplayer控件,怎么样能实现所选歌曲一首接一首的播放!(100分)

  • 主题发起人 主题发起人 狂龙
  • 开始时间 开始时间

狂龙

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位高手:
用mediaplayer控件播放歌曲时,当选择了多首歌曲时,怎么样才能使选择的歌曲
一首接一首地唱下去!
 
你可以利用mediaplayer的onnotify事件,因为每翻播完一首就会产生这样一个事件。
在public中添加一个变量playno,在每播完一首,就将其加1直至listbox1.items.count,
播完一首就让mediaplayer1.filename:=listbox1.items.strings,然后再调用mediaplayer1.play;
就可以了!
 
同意楼上,采用播放列表的形式。
 
同意yypeng的
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin

if ((MediaPlayer1.position>=mediaplayer1.length)or(MediaPlayer1.NotifyValue=nvSuccessful))
and (MediaPlayer1.Mode=mpStopped) then

NextSpBtClick(Nil);//下一首

end;
 
受益不浅!
 
用timer控件来检测也无不可!
只要触发 if mediaplayer1.position=mediaplayer1.max then

mediaplayer1.filename:='你要设置的下一个文件!';
mediaplayer1.open;
mediaplayer1.play;

下一个文件可以通过listbox中的下一项来设置。
 
我认为Timer控件更加灵活,我同意楼上的见议!
 
var
i:byte;

......

//ListBox1的mulselected设置为true;
procedure TForm1.FormCreate(Sender: TObject);
begin

i := 1;
ListBox1.Selected[0] := true;
mediaplayer1.play;
end;


procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin

ListBox1.Selected := true;
mediaplayer1.filename := ListBox1.Items;
mediaplayer1.open;
mediaplayer1.play;
i := i + 1;
if i > ListBox1.Items.count - 1 then
i := 0;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin

Label1.caption := timetostr(time);
if mediaplayer1.position=mediaplayer1.TrackLength[1] then

begin

ListBox1.Selected:=true;
mediaplayer1.filename:=ListBox1.Items;
mediaplayer1.open;
mediaplayer1.play;
i:=i+1;
if i>ListBox1.Items.count - 1 then
i:=0;
end;

end;



 
用timer控件
只要触发 if mediaplayer1.position=mediaplayer1.max then

mediaplayer1.filename:='你要设置的下一个文件!';
mediaplayer1.open;
mediaplayer1.play;
 
onnotify事件有时候不正常,有时能播放,有时又不响应了,这是怎么回事?
 
先减这一下所放歌曲的长度,然后当放的长度达到歌曲长度时就下一首,我在做MP3,
欢迎和我交流QQ:45060593,注明DFW呀
 
后退
顶部