線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2047
推到 Plurk!
推到 Facebook!

播放器的進度條

尚未結案
蔚空_1
一般會員


發表:6
回覆:0
積分:1
註冊:2005-10-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-15 16:14:29 IP:202.86.xxx.xxx 未訂閱
想用 MediaPlayer 做個播放器, 但delphi提供的進度條不美, 他提供的有trackbar等...想用圖片自己做一個,好像winamp那樣。 我自己做的,但不理想...”有小數點差異”
引言: var fre, MovLen : Real; procedure TForm1.Button1Click(Sender: TObject); begin Player.TimeFormat := tfMilliseconds; Player.FileName := 'test.mp3'; Player.Open; Timer1.Enabled := true; Player.Play; end; //Player = MediaPlayer1 procedure TForm1.Timer1Timer(Sender: TObject); begin fre := Player.Length / 1000;//頻率 MovLen := Bar.Width / fre ;//每次移動 Move.Left := Move.Left + Round(MovLen); if (Player.Position = Player.Length) then//當播完就停止 Begin Timer1.Enabled := false; Move.Left := Bar.Left; End; end;
以上方法問題出在Move.Left,由於Left不支持Float,那麼每次移動都有小數點的差異,如果歌曲好長,差異就好大了.
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-16 17:11:44 IP:203.73.xxx.xxx 未訂閱
再宣告一個全域變數,這樣就可以支持Float了啊。
var
  MoveLeft:Double;    MoveLeft:=MoveLeft   MovLen;
Move.Left := Round(MoveLeft);    
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-19 13:43:58 IP:219.134.xxx.xxx 未訂閱
這樣做如何? 給點提示,不一定要用delphi的標準元件,真的不好看...我用suiPack做外觀設計的,可以換皮膚,當然也有很多選擇,可以search看看吧 進度條的部份我用ProgressBar,MIN設0,MAX設10000,每秒鐘抓幾10次位置更新,POSITION := ROUND((現在播放片段點/片段總時間點)*10000) ; 許下第一千零一個願望 有一天幸福會聽我的話
系統時間:2024-05-17 10:19:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!