大家帮我看看,MediaPlayer1怎么不能得到状态?(有源码)(50分)

  • 主题发起人 主题发起人 0x0
  • 开始时间 开始时间
0

0x0

Unregistered / Unconfirmed
GUEST, unregistred user!
for j:=0 to 4do

play[j]:='';
play[0]:=getcurrentdir()+'/sound/12.wav';
if Copy(dw,0,3)='ppp' then

play[1]:=getcurrentdir()+'/sound/1.wav'
else

play[1]:=getcurrentdir()+'/sound/1.wav';
if dw1>'0' then

play[2]:=getcurrentdir()+pchar(dw4);
if dw2>'0' then

play[3]:=getcurrentdir()+pchar(dw5);
if dw3>'0' then

play[4]:=getcurrentdir()+pchar(dw6);
play[5]:=getcurrentdir()+'/sound/OVER.wav';
MediaPlayer1.FileName :=play[0];
MediaPlayer1.Open ;
MediaPlayer1.Play ;
Timer2.Enabled :=true;
end;


procedure TForm1.Timer2Timer(Sender: TObject);
begin

if MediaPlayer1.Mode=mpstopped then
//(到这里是就MediaPlayer1.Mode就不能执行下去了!)
playsoune;
end;
 
你的代码有错,MediaPlayer有个OnNotify事件,在这个事件里面就可以得知当前状态(一旦状态更改就会触发这个事件)
const

ModeStr: array[TMPModes] of string = ('Not ready', 'Stopped', 'Playing', 'Recording', 'Seeking', 'Paused', 'Open');

procedure TForm1.MediaPlayer1Notify(Sender: TObject);

begin

with Sender as TMediaPlayerdo

begin

Form1.Caption := ModeStr[Mode];
{ Note we must reset the Notify property to True }//翻译:注意,我们必须重置 Notify 属性为 True
{ so that we are notified the next time the }//翻译:以便我们能在下次 mode 变化的时候得到通知。
{ mode changes }
Notify := True;
end;

end;
 
程序执行到
Timer2.Enabled :=true;
这里时
procedure TForm1.Timer2Timer(Sender: TObject);
begin

if MediaPlayer1.Mode=mpstopped then
//(到这里是就MediaPlayer1.Mode就不能执行下去了!)
playsoune;
end;


这个Timer2还能得知道MediaPlayer1.Mode为Mpplaying
再下一步就不行了!大家再帮我看看哈!
 
这么快又沉下去了!兄弟们帮我看看哈!
 
兄弟没看到我上面的回答?????????
 
zqw0117
不好意思哈!
我看了上面的回答!
以前没用过这个控件!
能告诉我具体我该怎么办吗?
谢了!
 
后退
顶部