為何停止播放wave時會出現這樣的訊息? |
答題得分者是:nlj859
|
yachyn
一般會員 發表:4 回覆:1 積分:1 註冊:2003-12-07 發送簡訊給我 |
請問各位大大,
為何我在停止循環的聲音時會出現這樣的訊息?
是因為我有什麼設定沒做嗎? 以下是我的原始程式,
麻煩請大大指點我~~謝謝~~
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Edit1->Text = "1";
int a = StrToInt(Edit1->Text);
if ( a == 1 )
playsound(a);
}
//--------------------------------------------------------------
void TForm1::playsound(int index)
{
MediaPlayer1->FileName =
"C:\\Program Files\\Windows NT\\Pinball\\SOUND1.WAV";
MediaPlayer1->Open();
MediaPlayer1->Play();
}
//----------------------------------------------------------------
//聲音停止按鈕
void __fastcall TForm1::Button2Click(TObject *Sender)
{
MediaPlayer1->Stop();
MediaPlayer1->Close();
}
//----------------------------------------------------------------
//觸發Notify,讓wave循環
void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender)
{
MediaPlayer1->Play();
}
//----------------------------------------------------------------
遇見,遇不見都這麼巧
------
遇見,遇不見都這麼巧 |
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
Hello yachyn, 你使用
//觸發Notify,讓wave循環 void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender) { MediaPlayer1->Play(); }來重覆播放,這樣關也關不起來. 可以把 MediaPlayer1->Close();放到FormClose就可以了. 另外,我重覆播放的方式是用Timer搭配聲音或影像長度來控制: void __fastcall TForm1::Timer1Timer(TObject *Sender) { Label1->Caption=MediaPlayer1->Position; Label2->Caption=MediaPlayer1->TrackLength[1]; if (Label1->Caption==Label2->Caption) MediaPlayer1->Play(); }所以全部的程式碼如下: TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Edit1->Text = "1"; int a = StrToInt(Edit1->Text); if (a==1) playsound(a); } //-------------------------------------------------------------- void TForm1::playsound(int index) { MediaPlayer1->FileName ="C:\\Program Files\\Windows NT\\Pinball\\SOUND1.WAV"; MediaPlayer1->Open(); MediaPlayer1->Play(); } //---------------------------------------------------------------- //聲音停止按鈕 void __fastcall TForm1::Button2Click(TObject *Sender) { MediaPlayer1->Stop(); } void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { MediaPlayer1->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { Label1->Caption=MediaPlayer1->Position; Label2->Caption=MediaPlayer1->TrackLength[1]; if (Label1->Caption==Label2->Caption) MediaPlayer1->Play(); }請參考看看. 發表人 - nlj859 於 2004/08/17 02:17:41 |
yachyn
一般會員 發表:4 回覆:1 積分:1 註冊:2003-12-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |