小弟我设置TMediaplayer的Notify := True;OnNotify := NotifyProc;并在NotifyProc中判断mode,为什么当文件播完却总是playing
我设置TMediaplayer的Notify := True;OnNotify := NotifyProc;并在NotifyProc中判断mode,为什么当文件播完却总是playing?
procedure TForm1.FormCreate(Sender: TObject);
begin
MediaPlayer1.Notify := True;
MediaPlayer1.OnNotify := NotifyProc;
end;
procedure TForm1.NotifyProc(Sender: TObject);
begin
Case (Sender As TMediaPlayer).Mode of
mpNotReady:
begin
Memo1.Lines.Add( 'mpNotReady ');
end;
mpStopped:
begin
Memo1.Lines.Add( 'mpStopped ');
end;
mpPlaying:
begin
Memo1.Lines.Add( 'mpPlaying ');
end;
mpRecording:
begin
Memo1.Lines.Add( 'mpRecording ');
end;
mpSeeking:
begin
Memo1.Lines.Add( 'mpSeeking ');
end;
mpPaused:
begin
Memo1.Lines.Add( 'mpPaused ');
end;
mpOpen:
begin
Memo1.Lines.Add( 'mpOpen ');
end;
end;
(Sender As TMediaPlayer).Notify := True;
end;
当文件播完了以后为什么显示mode是playing?
------解决方案--------------------
当TMediaPlayer的一个媒体控件方法(诸如Back、Close、Eject、Next、Open、Pause、PauseOnly、Play、Previouse、Resume、Rewind、StartRecordint、Step或Stop)执行完毕,就会触发OnNotify。我测试其Click事件及Notify,发现其发送的是执行完毕之前的Mode,并且如果是手动进行点击按钮的话,你会发现OnNotify不会按照我们想像的模式进行,有的时候返回的是两个状态,有的时候返回的是一个状态,但是如果按照里面代码的分析,是正确的。而如果将上面的代码添加到OnClick事件中,便会完全呈现发送的是执行完毕之前的Mode。
------解决方案--------------------
学习!
------解决方案--------------------
我觉得应该加一个判断,当其position=length的时候,让其自动的stop应该就可以了。你有没有发现realplay 和windows media player没有开始按钮的,只有开始和暂停共用的,而影音风暴是有的,我想应该是这样实现的。不行,查看源代码,看原因,然后自己写一个事件来完成。也可以利用定时器,真麻烦呀,感觉。
procedure TForm1.FormCreate(Sender: TObject);
begin
MediaPlayer1.Notify := True;
MediaPlayer1.OnNotify := NotifyProc;
end;
procedure TForm1.NotifyProc(Sender: TObject);
begin
Case (Sender As TMediaPlayer).Mode of
mpNotReady:
begin
Memo1.Lines.Add( 'mpNotReady ');
end;
mpStopped:
begin
Memo1.Lines.Add( 'mpStopped ');
end;
mpPlaying:
begin
Memo1.Lines.Add( 'mpPlaying ');
end;
mpRecording:
begin
Memo1.Lines.Add( 'mpRecording ');
end;
mpSeeking:
begin
Memo1.Lines.Add( 'mpSeeking ');
end;
mpPaused:
begin
Memo1.Lines.Add( 'mpPaused ');
end;
mpOpen:
begin
Memo1.Lines.Add( 'mpOpen ');
end;
end;
(Sender As TMediaPlayer).Notify := True;
end;
当文件播完了以后为什么显示mode是playing?
------解决方案--------------------
当TMediaPlayer的一个媒体控件方法(诸如Back、Close、Eject、Next、Open、Pause、PauseOnly、Play、Previouse、Resume、Rewind、StartRecordint、Step或Stop)执行完毕,就会触发OnNotify。我测试其Click事件及Notify,发现其发送的是执行完毕之前的Mode,并且如果是手动进行点击按钮的话,你会发现OnNotify不会按照我们想像的模式进行,有的时候返回的是两个状态,有的时候返回的是一个状态,但是如果按照里面代码的分析,是正确的。而如果将上面的代码添加到OnClick事件中,便会完全呈现发送的是执行完毕之前的Mode。
------解决方案--------------------
学习!
------解决方案--------------------
我觉得应该加一个判断,当其position=length的时候,让其自动的stop应该就可以了。你有没有发现realplay 和windows media player没有开始按钮的,只有开始和暂停共用的,而影音风暴是有的,我想应该是这样实现的。不行,查看源代码,看原因,然后自己写一个事件来完成。也可以利用定时器,真麻烦呀,感觉。