写一个播放器,用了Delphi自带的TTrackBar,实时显示当前播放进度,以及响应用户通过鼠标或者键盘来调整当前的播放进度。
起初这两个事件我都是在TTrackBar.OnChange里处理的。然而实际使用当中你会发现,这样的播放效果是在是让人难以恭维,因为啥,你看看:
我用一Timer来定期取当前的播放进度,在播放函数里:
procedure OnPlay();
begin
TrackBar1.Position := FilePlayedPos;
end;
在Onchange里:
procedure TTrackBar1.OnChange();
begin
FilePlayedPos := TrackBar1.Position;
end;
这样你看到了吧,在播放的时候同时触发了TrackBar的OnChange事件,而OnChange事件又调整了当前播放进度,那么实际的效果肯定是“卡”,卡的厉害。。。。。。
回头想了想,总觉着在OnChange里手动调整播放进度不大合适,要是能够只在每次用户抬起鼠标左键这个事件里去实现似乎更加合理。然而让人费解的是,VCL里的TrackBar竟然没有OnMouse家族事件。得,这次可得想想法子。在TTrackBar上按着Ctr

本文讲述了在Delphi中为TTrackBar控件添加OnMouseUp、OnMouseDown、OnMouseMove事件,以解决在播放器中使用TTrackBar时出现的播放卡顿问题。作者通过继承TTrackBar类并发布受保护的鼠标事件,实现了更流畅的用户体验。
最低0.47元/天 解锁文章
1318

被折叠的 条评论
为什么被折叠?



