请Wind8Bell指导资源文件的问题。。。 (100分)

  • 主题发起人 主题发起人 bjaman
  • 开始时间 开始时间
B

bjaman

Unregistered / Unconfirmed
GUEST, unregistred user!
资料中介绍:
[ (4)存取资源文件中的AVI
在工程中添加一Animate控件,在需要的地方加入:
procedure TfrMain.LoadIconClick(Sender: TObject);
begin

Animate1.ResName :='MyAvi' ;
//资源标识
Animate1.Active :=True ;
End ;
]
问题:1。Animate控件是不是VCL控件?我在控件面板上找不着。。。
2。该控件怎么加入工程?我用Animate1.Create(self);创建出错。。。它到底怎么用?有没这方面的实例?
3。此控件只能调用.AVI类型的资源文件吗?

4。 PlaySound('MyWav',HInstance,Snd_ASync or Snd_Memory or snd_Resource);只是用来播放.WAV类型的资源文件的,那么.MID、.RMI类型的音乐文件可否加入资源文件并有相应的调用方法呢?资料上没有介绍,我也没有试验成功。请指教。。。
5。“风之铃”闹钟程序里,当PlaySound()函数被调用时,Timer的事件好象停滞了似的,消息没有得到及时处理,直到连续的PlaySound()都执行完毕才响应,导致界面有较大迟滞(包括时钟处理的时间显示及用户对界面的各种操作)。尤其当WAVE文件稍长时,情况更明显。有没有办法使PlaySound()的调用与Timer的事件互不影响呢?是不是要处理相关的消息?何时处理?或者另开一个线程来调用PlaySound()?
我的测试情况是:当使用了Snd_ASync or snd_Resource参数以异步资源方式调用时,可以与界面显示不发生冲突,但连续的多次此函数调用,给用户反馈回来的只是最后一次调用的效果,其他先前的调用结果都被丢弃了。当使用了Snd_Sync or snd_Resource参数以同步资源方式调用时,连续调用的效果都可一一反馈给用户,但是基本上是独占了资源,直到它执行完毕系统才会响应其他系统消息,使界面显示呆滞不动。
我现在的一个笨办法是,在连续的PlaySound()之间加一句Application.processmessages;来处理系统消息。但这种方法太牵强了。当一个声音文件较大时,很明显没有任何处理效果。
 
1、2、3、animate控件在win32中第9个(delphi7)。
4、其他类型的文件也可以加入资源文件并进行调用。但是只有wav文件可以直接读取。其他类型文件只能以流的形式读出到临时存储空间然后再播放。具体使用你可以在网上找一下相关资料。
5、我当时也发现了这个问题,但是因为是做演示用,就懒得改了:),我认为一个可行的办法就是,把playsound单独开一个线程来执行,就不会存在上述问题。你可以试验一下,别忘了解决后发给我哦:)
 
谢谢指点!
现在还处于学习阶段,如果程序有明显的改动(良)时,一定不会忘了发回一份于你!
 
后退
顶部