|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.10.2012, 13:37 | #1 |
Пользователь
Регистрация: 17.10.2012
Сообщений: 40
|
bass.dll перемотка на отдельной форме
Я что-то ничего не понял.. Я хочу сделать перемотку на другой форме. Пишу так
BASS_ChannelSetPosition(channel, form1.Scrollbar1.Position, 0); Т.е один скролл бар находиться на форме 3, другой на форме 1, тот который на 3, отлично матает туда, суда.. А который на 1 форме не матает.. Помогите. |
29.10.2012, 14:12 | #2 |
Далеко не
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,512
|
желательно бы увидеть больше кода..p.S могу выложить исходники моего недоработанного плеера(Много функций много кода))) если надо?
|
29.10.2012, 14:53 | #3 |
Пользователь
Регистрация: 17.10.2012
Сообщений: 40
|
Выкладывай =))
Вот больше кода: scrollbar1.Min:=0; //минимальное значение scrollbar1.Max:=bass_ChannelGEtLeng th(Channel, 0)-1;//максимальное значение form1.scrollbar1.Min:=0; //минимальное значение form1.scrollbar1.Max:=bass_ChannelG EtLength(Channel, 0)-1;//максимальное значение //присваеваем заголовку формы имя проигрываемого файла Form3.Caption:=ExtractFileName(File Name); //Устанавливаем PlayMode - play mode:=play; end; procedure TForm3.FormCreate(Sender: TObject); begin //установка громкости form2.trackbar1.Min:=0; form2.trackbar1.Max:=10; form2.trackbar1.Position:=5; //установка баланса form2.trackbar2.Min:=-5; form2.trackbar2.Max:=5; form2.trackbar2.Position:=0; // проверка корректности загруженной BASS.DLL if (HIWORD(BASS_GetVersion) <> BASSVERSION) then begin MessageBox(0,'Не корректная версия BASS.DLL',nil,MB_ICONERROR); Halt; end; // Инициализация аудио - по умолчанию, 44100hz, stereo, 16 bits if not BASS_Init(-1, 44100, 0, Handle, nil) then begin MessageBox(0,'Ошибка инициализация аудио',nil,MB_ICONERROR); Halt; bass_ChannelSetPosition(Channel, form1.scrollbar1.position, 0); bass_ChannelSetPosition(Channel, scrollbar1.position, 0); end; end; procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction); begin //Освобождаем объекты перед закрытием Bass_Stop(); //останавливаем проигрывание BASS_StreamFree(channel); // освобождаем звуковой канал Bass_Free;// Освобождаем ресурсы используемые Bass end; procedure TForm3.ListBox1DblClick(Sender: TObject); begin i:=ListBox1.Itemindex; Filename:=ListBox1.Items.Strings[i]; BASS_ChannelStop(Channel);//останавливаем воспроизведение - стоп mode:=Stop;//устанавливаем playmode -> стоп player; end; procedure TForm3.Button2Click(Sender: TObject); begin PlaySound('ancient_button1.wav',0,S ND_ASYNC); //очистка плейлиста ListBox1.Clear; end; procedure TForm3.Timer1Timer(Sender: TObject); var FFTFata : TFFTData; TrackLen, TrackPos: Double; ValPos: Double; ValLen: Double; begin //проверяем режим воспроизведения, если не Play то выходим if mode<>play then Exit; //воспроизведение следующей песни //если время проигрывания равно длине песни по времени, if BASS_ChannelGetPosition(channel, 0)= BASS_ChannelGetLength(channel, 0) then // в место if BASS_ChannelGetPosition(channel, 0)=BASS_ChannelGetLength(channel, 0) then // можно сделать так: if BASS_ChannelIsActive(channel)=BASS_ ACTIVE_STOPPED then // Практика показывает, что второй вариант более предпочтительный, // т.к. проверка по длине трека иногда приводит к ошибкам в работе плеера. begin //то выбираем следующую песню из плейлиста if i<ListBox1.Items.Count-1 then begin inc(i); Filename:=ListBox1.Items.Strings[i]; ListBox1.ItemIndex:=i; mode:=stop; player; end //если лист закончился - выходим else exit; end; //вызов визуализации BASS_ChannelGetData(Channel, @FFTFata, BASS_DATA_FFT1024); Draw (form1.PaintBox1.Canvas.Handle, FFTFata, 0,-5); //устанавливаем позицию scrollbar в зависимоти от позиции трека form1.ScrollBar1.Position:=bass_cha nnelGetPosition(channel,0); scrollbar1.Position:=bass_channelGe tPosition(channel,0); //время проигрывания трека //считаваем сколько секунд прошло от начала воспроизведения TrackPos:=BASS_ChannelBytes2Seconds (Channel, BASS_ChannelGetPosition(Channel,0)) ; //считываем всю длину песню в секундах TrackLen:=BASS_ChannelBytes2Seconds (Channel, BASS_ChannelGetLength(Channel,0)); //переводим секунды в часы ValPos:=TrackPos / (24 * 3600); ValLen:=TrackLen / (24 * 3600); //Выводим данные о времени на форму в Label1 и Label2 form1.Label1.Caption:=FormatDateTim e('hh:mm:ss',ValPos); form1.Label2.Caption:=FormatDateTim e('hh:mm:ss',ValLen); //установка громкости звука BASS_ChannelSetAttribute(Channel,BA SS_ATTRIB_VOL, form2.trackBar1.Position/10); //установка баланса BASS_ChannelSetAttribute(Channel,BA SS_ATTRIB_PAN, form2.Trackbar2.Position/5); end; procedure TForm3.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); begin //устанавливаем позицию воспроизведения трека в зависимости от положения scrollbar BASS_ChannelSetPosition(channel, form1.Scrollbar1.Position, 0); end; procedure TForm3.ListBox1Click(Sender: TObject); begin end; end.[/INDENT] |
29.10.2012, 21:20 | #4 |
Далеко не
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,512
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Видеоплеер на отдельной форме | саша40 | Мультимедиа в Delphi | 5 | 26.09.2012 20:42 |
перемотка bass 2.4 | s1s1s1 | Мультимедиа в Delphi | 9 | 27.11.2011 00:08 |
BASS.DLL | Serrg1994 | Мультимедиа в Delphi | 0 | 20.09.2011 21:38 |
Перемотка с использованием bass.dll | WinMen | Мультимедиа в Delphi | 8 | 16.05.2011 01:23 |
Ошибка при выхове функций Bass.dll из другой DLL | SalasAndriy | Общие вопросы Delphi | 7 | 21.10.2009 23:36 |