我在编一个flash播放器,请问怎么实现进度调节?我用了这种方法,可是不行,大家来帮帮我(50分)

  • 主题发起人 主题发起人 antong
  • 开始时间 开始时间
A

antong

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的方法:
放一个ShockwaveFlash
放一个TrackBar
放一个Timer
然后...
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
ShockwaveFlash1.FrameNum:=trackbar1.Position;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
trackbar1.Position:=ShockwaveFlash1.FrameNum;
end;
注:TrackBar的Max等属性都会搞,
问题是当Timer每秒自动改变TrackBar的位置的时候,就也会触发TrackBar的Change事件,
导致出现循环,使Flash播放变的有停顿,不流畅.
 
设一变量TimerEnabled,

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 if not TimerEnabled then
 ShockwaveFlash1.FrameNum:=trackbar1.Position;
end;
然后适当控制TimerEnabled的值

 
我前一阵子编了一个FLASH播放器,也遇到了同样的问题,我的解决思路如下(手中有现成的源程序
,Xp与普通下拉式菜单可以互相切换,支持列表循环及删除前后播放停止帧等功能,可与我联系bxqxb@sina.com:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
{当移动TrackBar1时判断移动的位置与现在播放的帧的差的绝对值是否大于1,用绝对值
是因为不仅是向后移动,还可能向前移动 }
if ABS(TrackBar1.Position-ShockwaveFlash1.FrameNum) > 1 then
ShockwaveFlash1.FrameNum:=trackbar1.Position;
end;
 
接受答案了.
 
后退
顶部