求一个TrackBar应用问题(200分)

  • 主题发起人 主题发起人 CAXZ
  • 开始时间 开始时间
C

CAXZ

Unregistered / Unconfirmed
GUEST, unregistred user!
求一个播放器 如Flash播放器
的TrackBar的应用方法
要求 正常时候 随着播放进度 值不断增大 Slider慢慢移动。。
当鼠标移动时 画面随着位置变动 松开时画面继续播放。。
求此种方法
用的TrackBar控件是RxSlider
 
一般媒体播放器都可以得到当前播放媒体的总时间数和当前已播放位置,
你只要间隔一定的时间去取它的当前位置,就可以随着播放进度设置Position值。
拖动时,可以在Change事件中取Position值,然后设置相应的当前播放位置。
 
如果没有Position值
可以指定一个Boolean变量
procedure TKampx1.Timer1Timer(Sender: TObject);
begin
if not MPlayer.DLLLoaded then exit;
if (MPlayer.mode=plmPlaying) then
begin
DontSeek:=true;
RXSlider1.Value:=MPlayer.CurrentPosition;
DontSeek:=false;
end;
if MPlayer.PlayStopped then
begin
RXSlider1.Value:=0;
PlayBtn1.Enabled:=true;
StopBtn.Enabled:=false;
Pausebtn1.Enabled:=false;
if K_AmP_About.LoopedCB.checked then
begin
MPlayer.Restart;
PlayBtn1.Enabled:=false;
StopBtn.Enabled:=true;
Pausebtn1.Enabled:=true;
end;
end;
end;

procedure TKampx1.RxSlider1Change(Sender: TObject);
begin
if not (DontSeek) then
if (MPlayer.mode=plmPlaying) or ((MPlayer.mode=plmPaused))
then MPlayer.CurrentPosition:=RXSlider1.Value;
end;
 
接受答案了.
 
我刚好也编了一个Flash播放器。用了个定时器。Flash控件名称为Flash
相关代码供参考:

procedure TMainForm.Slider1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MainForm.Timer1.Enabled:=False; //如果定时器不中止的话,将无法给Slider1.Position赋值。
//也可以把这一句添加到 Slider1Change 过程中。
end;

procedure TMainForm.Slider1Change(Sender: TObject);
begin
MainForm.Flash.GotoFrame(Slider1.Position);
end;

procedure TMainForm.Slider1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MainForm.Timer1.Enabled:=True;
MainForm.Flash.GotoFrame(Slider1.Position);
MainForm.Flash.Play;
end;

Good Luck!
 
后退
顶部