CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  GAME,图形处理/多媒体

大家来救急啊!一个关于连续播放wav的问题·!~~~~

楼主mikechen1031(陈东)2004-05-04 20:17:38 在 Delphi / GAME,图形处理/多媒体 提问

我要连续播放wav文件,用循环在字符串中取字匹配wav文件名,用mediaplayer的,可是每次都只放最后一个声音,原因是刚放声音循环又取得下一个文件名,第一个声音还没有放就放下一个拉!我在循环前加判断也不行,大家帮我看看!谢谢!分不够再加!~~部分原码如下:  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var   h,s,a:string;   sStr:string;   x,i:integer;  
          bChina:Boolean;  
              procedure   Sing(sStr:String);                                                     //产生声音  
              var   sWav:String;  
                begin  
                  sWav:='mus\wav_'+sStr+'.wav';  
                    if   sStr=''   then   exit;  
                      try  
                        if   ((sStr='   ')   or   (sStr=',')   or   (sStr='.')   or   (sStr=';')   or   (sStr='!'))   then  
                            begin  
                              mediaplayer1.Close;  
                              mediaplayer1.FileName:=apppath+'mus\wav_.wav';  
                              mediaplayer1.Open;  
                              mediaplayer1.play;  
                            end                           //停止一会  
                        else  
                          begin  
                            mediaplayer1.Close;  
                            mediaplayer1.FileName:=apppath+sWav;  
                            mediaplayer1.Open;  
                            mediaplayer1.play;  
                          end;  
                      except  
                        Showmessage('语音库中没有下列文件:wav_'+sStr+'.wav');  
                      end;  
                end;  
  begin  
     
          a:=combobox3.Text;  
          i:=strtoint(a);  
          h:=combobox2.text;  
          s:=DBEdit1.Text+combobox2.text   ;  
      end;  
        for   x:=0   to   i   do  
        begin  
            sStr:=s;  
            bChina:=False;  
                while   length(sStr)>0   do                                               //判断文本是否结束  
                    begin  
                      s:='';  
                      if   ((Copy(sStr,1,1)='<')   or   (bChina=True))   and   (Copy(sStr,1,1)<>'>')   then     //判断标识符  
                            begin  
                              bChina:=True;  
                              if   Copy(sStr,1,1)='<'   then  
                              sStr:=Copy(sStr,2,length(sStr));  
                              s:=Copy(sStr,1,2);  
                              sStr:=Copy(sStr,3,length(sStr));  
                            end  
                      else   if   (Copy(sStr,1,1)='>')   or   (bChina=False)   then           //判断标识符  
                            begin  
                              bChina:=False;  
                              if   Copy(sStr,1,1)='>'   then  
                                sStr:=Copy(sStr,2,length(sStr));  
                              if   Copy(sStr,1,1)<>'<'   then  
                                begin  
                                  s:=Copy(sStr,1,1);  
                                  sStr:=Copy(sStr,2,length(sStr));  
                                end;  
                            end;  
                          Sing(s);  
                  end;  
        end;  
  end;  
   
   
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  begin  
          Apppath:=ExtractFilepath(Application.ExeName);//获取当前的目录  
          if   apppath[length(apppath)]<>'\'   then  
                apppath:=apppath+'\';  
  end;  
  问题点数:0、回复次数:5Top

1 楼kaershaw(一苇渡江&&欲出江湖)回复于 2004-05-04 20:41:26 得分 0

你可以判断上一个文件是否播放完再播放下一个文件!  
  procedure   TForm1.MediaPlayer1Notify(Sender:   TObject);  
  begin  
      sleep(500);//主要其缓冲作用  
      with   MediaPlayer1   do  
          begin  
          if   notify   And   Chechbox1.Checked   And//接受信息  
              (mode=mpStopped)   then//已经停止  
              begin  
                  ReWind;  
                  play;  
              end;  
      notify:=true;//开始接受信息  
      end;  
  end;Top

2 楼mikechen1031(陈东)回复于 2004-05-05 10:16:06 得分 0

可是用sleep是放音时程序是僵死的啊!只有等放完音主界面才活啊!~~Top

3 楼songyangaaron(千里独行)回复于 2004-05-05 20:53:15 得分 0

试试PlaySound吧Top

4 楼mikechen1031(陈东)回复于 2004-05-06 14:26:43 得分 0

可是用PlaySound是放音时程序是僵死的啊!只有等放完音主界面才活啊!~~  
  Top

5 楼songyangaaron(千里独行)回复于 2004-05-09 22:15:30 得分 0

还真不是很简单哦,用多线程总可以了吧Top

相关问题

  • 江湖救急:mediaplayer无法播放
  • 播放wav
  • 如何实现wav文件的连续播放
  • 救急!救急!
  • 救急,救急
  • 救急!救急!
  • 急救!急救!急救!急救!急救!急救!急救!急救!
  • win2000下媒体播放器控件(msdxm.ocx)问题,江湖救急啊!!!!!!!!!!!
  • RealPlayer连续播放
  • 救急!!!!!!!

关键词

  • 文件
  • 循环
  • sstr
  • mediaplayer
  • wav
  • swav
  • 播放
  • apppath
  • 声音
  • 判断

得分解答快速导航

  • 帖主:mikechen1031

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo