![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Случайный порядок воспроизведения
alois © (2003-07-09 19:02:00)
Мастера, подскажите, plz, как заставить медиаплейер проигрывать мелодии в случайном порядке.
alois (2003-07-10 18:41:00) [1]
THANKS VERY MUCH
pasha676 (2003-07-10 10:08:00) [2]
> т.е. нужно перемешать плейлист так, чтобы каждая композиция
> была представлена один раз
На самом деле достаточно одного прохода по списку по принцыпу перемешивания колоды карт. Тогда и повторяться не будет и все учтеться и т.д.
iXuSs (2003-07-09 23:33:00) [3]Чуть не забыл. Если требуется проиграть файлы в случайном порядке, то логично перемешать порядок расположения файлов в плейлисте. Для этого действительно подойдёт Random, но возникнут некоторый сложности с неповторением композиций за один подход, т.е. нужно перемешать плейлист так, чтобы каждая композиция была представлена один раз. Для этого предлагаю простую процедурку, которая заполняет массив случайными неповторяющимися числами. При решении твоей задачи можно заполнить некоторый динамический массив случайными неповторяющимися числами и играть композиции соответсвенно массиву, или непосредственно перемешать сам плейлист, переделав данную процедурку под свои нужды:
procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 0 to High(A) do A[I] := I;
for i := High(A) downto 0 do
begin
( I)Чуть не забыл. Если требуется проиграть файлы в случайном порядке, то логично перемешать порядок расположения файлов в плейлисте. Для этого действительно подойдёт Random, но возникнут некоторый сложности с неповторением композиций за один подход, т.е. нужно перемешать плейлист так, чтобы каждая композиция была представлена один раз. Для этого предлагаю простую процедурку, которая заполняет массив случайными неповторяющимися числами. При решении твоей задачи можно заполнить некоторый динамический массив случайными неповторяющимися числами и играть композиции соответсвенно массиву, или непосредственно перемешать сам плейлист, переделав данную процедурку под свои нужды:
procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 0 to High(A) do A[I] := I;
for i := High(A) downto 0 do
begin
R := Random(I);
S := A[R];
A[R] := A[I];
A[I] := S;
end;
end;
iXuSs (2003-07-09 23:26:00) [4]
Для решения данного вопроса прежде всего нужно иметь некоторый список файлов, которые надо для начала уметь проиграть в прямом порядке. Это можно реализовать, умея пользоваться событием OnNotify и свойством Notify плеера, которое наступает при окончании выполнения какой-либо команды, в частности, при окончании проигрывания файла. Для создания списка файлов (т.е. плейлиста) можно воспользоваться классом TStrings.
Удачи.
Fenik (2003-07-09 22:24:00) [5]
Есть такая замечательная функция Random