AIMP Forum

AIMP для Windows => Skin Editor / Skin Engine => Вопросы => Topic started by: Black_AVP on February 25, 2016, 10:01:59

Title: [Вопрос] Почему не проходит команда "СТОП"?
Post by: Black_AVP on February 25, 2016, 10:01:59
Пытаюсь из состояния ПАУЗЫ плеер вернуть в начало трека и запустить воспроизведение с начала:
FindObject('acPlayerStop').Execute;
FindObject('acPlayerPlay').Execute
Но воспроизведение продолжается с остановленной позиции, игнорируя команду СТОП. Такое впечатление, что она просто не успевает отработать.
Если закоментить вторую строчку, то команда СТОП срабатывает.
А вот такое:
while FindObject('prvPlayerState').Get('State') <> 'opsStop' do FindObject('acPlayerStop').Execute;
FindObject('acPlayerPlay').Execute
завешивает плеер намертво.
Title: Re: [Вопрос] Почему не проходит команда "СТОП"?
Post by: Artem on February 25, 2016, 10:27:37
Любая из команд по управлению плеером выполняется асинхронно, поэтому и не работает. Ждать завершения команды в скрипте не получится - потоки будут ждать выполнения скрипта, а скрипт - их.
Title: Re: [Вопрос] Почему не проходит команда "СТОП"?
Post by: Soolo on February 25, 2016, 10:32:52
То есть в таких ситуациях нужно 2 отдельных последовательных скрипта?
Title: Re: [Вопрос] Почему не проходит команда "СТОП"?
Post by: Black_AVP on February 25, 2016, 11:29:34
Любая из команд по управлению плеером выполняется асинхронно, поэтому и не работает. Ждать завершения команды в скрипте не получится - потоки будут ждать выполнения скрипта, а скрипт - их.
Тогда понятно. Спасибо за ответ.
Но выход таки нашёлся:

  PS:= FindObject('prvPlayerState');
  if PS.Get('State') = 'opsPause' then PS.Set('Position', 0);
  FindObject('acPlayerPlay').Execute

Тему можно удалить.
Title: Re: [Вопрос] Почему не проходит команда "СТОП"?
Post by: Artem on February 25, 2016, 11:58:47
Пусть будет для информации.