我有一个声音文件的列表,这些文件存储在StringGrid的行中,我想按顺序播放。也就是说,当一个文件结束时,将读取网格的下一行并播放该文件。
Bass有一个BASS_SYNC_END
事件,它允许一个回调过程,我在应用程序的VCL版本中成功地使用了这个回调过程。但在FMX中没有。
回调的设置如下:
BASS_ChannelSetSync(chan1, BASS_SYNC_END, 0, @EndNormal, nil);
在播放文件结束时,其转到:
procedure EndNormal(handle: HSYNC; channel, data: DWORD; user: DWORD); cdecl;
begin
CPUnit1.NormPlaying := false;
Form1.AdvTimer.Enabled := true; // worked in VCL, ontimer proc gets file and plays
end;
在FMX中,变量将被更改,但计时器没有启用,因为我相信,它是主GUI线程的一部分,而不是BASS线程。可能只是幸运的是,它在VCL工作,但这是历史。
那么,在一个文件完成后,让下一个文件播放的技术是什么呢?
1条答案
按热度按时间zkure5ic1#
尝试同步它: