線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1405
推到 Plurk!
推到 Facebook!

【BCB】連續撥放兩段音效的問題

尚未結案
yserics
一般會員


發表:10
回覆:9
積分:3
註冊:2003-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-15 00:08:51 IP:218.168.xxx.xxx 未訂閱
各位先進,我有如下的問題: 我要做的動作是:依序播放一句英文sentence的中文及英文發音,在播放音效的同時,還允許使用者能夠輸入此英文文句… 我使用 MediaPlayer,並使用其 OnNotify 事件,在將兩段發音檔依序調用 MediaPlayer 來播放時,如果將 MediaPlayer->Wait 設為 true 的話,則使用者就不能在播發音的同時也可以輸入,所以我使用了一個 queue 及一個 counter,如果判斷現在 MediaPlayer 正在播聲音的話,就將要播放的音效檔加入 queue 中,產生 OnNotify 事件時,再從 queue 中抓第一個出來撥放。我寫的程式如下:     
void TForm1::playWmaSound(char * file)
{
        if (FileExists(file)) {
                playCount  ;  // 記錄現在有幾個發音檔正在或正等著播放
                if (playCount>1) {
                        addToPlayQueue(file);
                } else {
                        MediaPlayer1->FileName = file;
                        MediaPlayer1->Notify = true;
                        MediaPlayer1->Open();
                        MediaPlayer1->Play();
                }
        }
}    void TForm1::addToPlayQueue(char * file) {
        // queue q;
        // char playQueue[20][200];
        // 以上為 global,playQueue[] 記錄發音檔名,並以 queue 記錄此檔名在 playQueue 的位置,同時要播放的音效檔不會超過20個,playQueue每個可記錄的位置一開始都將其字串長度設為0            int i = 0;
        while ((i<20) && (strlen(playQueue[i])>0)) i  ;
        if (i<20) {
                q.push(i);
                strcpy(playQueue[i], file);
        }
}    void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender)
{
        playCount--;            if ((!q.empty()) && ((strlen(playQueue[q.front()])>0)&&(FileExists(playQueue[q.front()])))) {                    MediaPlayer1->FileName = playQueue[q.front()];
                MediaPlayer1->Open();
                MediaPlayer1->Play();
                strcpy(playQueue[q.front()], "");
                q.pop();            } 
}     
現在問題來了,當我連續播放兩段音效檔時: playWmaSound(file1); playWmaSound(file2); 它只會撥放 file2 ! 我甚至在 OnNofity 事件中將 playCount 及現在正在撥放的音效檔名 show 出來,發現總共產生一個file1的OnNotify及二個file2的OnNotify事件… 有誰能告訴我那裡做錯了嗎?或是有誰知道如果要連續撥放的話,該如何做? 我在版上已找了很多篇相關的文章,也試過了其方法,但至目前為止還沒有試成功過… 感謝感謝… YS.
系統時間:2024-05-05 18:55:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!