![]() |
|
|
|
|
#1
|
||||
|
||||
|
как реализовать перемотку музыки тоесть внизу шкала и в ней двигается ну скажем кружок по мере проигрывания музыки, нужно чтобы его можно было перемотать в нужный момент
|
|
#2
|
||||
|
||||
|
"передвинуть"
|
|
#3
|
||||
|
||||
|
Ну это зависит от компонента, или библиотеки, которую ты используешь (медиа плеер, или же басс, например).
Если используешь MediaPlayer, то у него есть свойство Position, его и надо изменять (например в TrackBar1.Change)... Пример: Код:
TrackBar OnChange MediaPlayer1.Position := MediaPlayer.Position + 1; // так же у Media Player есть свойства TrackLength, и Length, которые позволят узнать длину песни (видео) Последний раз редактировалось v1s2222, 10.10.2010 в 22:37. |
|
#4
|
||||
|
||||
|
MediaPlayer использую, порпобую
|
|
#5
|
||||
|
||||
|
Код:
procedure TfrmMyBrowser.TrackBar2Change(Sender: TObject); begin TrackBar2.Max := TrackLength; MediaPlayer1.Position := MediaPlayer.Position + 1; end; неопознает выделеенное красным Undeclared identifier |
|
#6
|
||||
|
||||
|
Если не опазнает, значит не объявил их. А насчет TrackLength - пиши так:
Код:
MediaPlayer1.TrackLength[i]; // PS добавь на форму сам MediaPlayer1 ЗЫ На статейку, почитай... http://www.beluch.ru/progr/100comp/4_8_3.htm А также тута: http://www.realcoding.net/article/view/1316 |
|
#7
|
||||
|
||||
|
Цитата:
Код:
TrackBar2.Max := MediaPlayer1.TrackLength; а позиция задаётся так: Код:
TfrmMyBrowser.TrackBar2Change(Sender: TObject); begin MediaPlayer1.Position := TrackBar2.Position; end; |
|
#8
|
||||
|
||||
|
если все же перемещать image:
Код:
var pressed:boolean;
tx:integer;
...
procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Pressed:=true;
MediaPlayer1.Pause;
tx:=X;
end;
procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Pressed then
begin
Panel2.Left:=Panel2.Left+x-tx;
MediaPlayer1.Position:=Round(MediaPlayer1.Length*(Panel2.Left/Panel1.Width));
tx:=x;
end;
end;
procedure TForm1.Panel2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Pressed:=false;
MediaPlayer1.Play;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var r:single;
begin
if MediaPlayer1.Length>0 then
r:=MediaPlayer1.Position/MediaPlayer1.Length
else
r:=0;
Panel2.Left:=Round({Image1.Left +} r*Panel1.Width); //раскомментить для TImage'й
end;Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var r:single;
begin
...
with PaintBox3.Canvas do
begin
Pen.Style:=psSolid;
Brush.Color:=clBtnFace;
Rectangle(0, 0, PaintBox3.Width, PaintBox3.Height); //контур
Pen.Style:=psClear;
if BP.GetLength>0 then
r:=BP.GetPos/BP.GetLength
else
r:=0;
Brush.Color:=clRed;
Rectangle(1, 1, Round(PaintBox3.Width*r), PaintBox3.Height); //заливка
end;
...
end; |
|
#9
|
|||
|
|||
|
Пасибо большое!... завтра опробую и сообщу результат... о, раз уж на то пошло если кто знает как image вращять по трем осям???? ну вот что-что а вот тут я даже не знаю с какой стороны подойти... если не лень мож кто знает, подскажите плз
|