Progress bar для CS6...Не обновляется, как исправить?

  • Автор темы Автор темы Larvatus
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Larvatus

Участник
Топикстартер
Сообщения
199
Реакции
6
Как уже описали тут http://forum.rudtp.ru/threads/esli-est-voprosy-po-skriptam.20634/page-27#post-533666 , также не смог прикрутить его к скрипту. Даже совет по добавлению строки app.scriptPreferences.enableRedraw = true; не помогло. Нашел тут http://jongware.mit.edu/iljscs6html/iljscs6/pc_Application.html#redraw redraw (), но видимо криво прикрутил. Подскажите как правильно использовать progress bar, чтобы он обновлял свое значение, а не отрубался в конце исполнения скрипта, находясь в первоначальном виде.
 
Насколько я понимаю, progressbar относится к ScriptUI, а значит (как показывает практика) не обязан работать хорошо, да и работать вообще. В иллюстраторовском Javascript Reference он отсутствует (как и остальные диалоговые контролы), а для адобы это равносильно тому, что можно вообще не поддерживать (скажем, в локализованных версиях) 'otbline'
 
  • Спасибо
Реакции: Larvatus
http://adobeindesign.ru/2011/08/01/progressbar/
Код покажете — будет что подсказывать. А лично я последнее время предпочитаю использовать обычный statictext, в котором пишется что-то типа "Выполнено ... %". Проще программируется, имхо.))
 
  • Спасибо
Реакции: Larvatus
http://adobeindesign.ru/2011/08/01/progressbar/
А тут, вроде как, про иллюстратор спрашивают. ;)
То что в индизайне работает на ура, в фотошопе и иллюстраторе работать вовсе не обязано.
 
Главное, чтоб у топикстартера заработало ;)
 
скрипт по ссылке отображает прогрессбар, но он не обновляется. На строку app.scriptPreferences.enableRedraw = true; выходит такое сообщение об ошибке
Снимок_342.PNG
а как задать это свойство для CS6 - не знаю. Наверное что-то вроде setStringPreference.

А лично я последнее время предпочитаю использовать обычный statictext, в котором пишется что-то типа "Выполнено ... %"
А можно код посмотреть?
 
app.scriptPreferences.enableRedraw = true
Я ж говорю - это все вышеописанное исключительно для индизайновского скриптинга, в иллюстраторовском все по другому. К примеру, у Application отсутствует свойство scriptPreferences потому и ругается. Есть просто preferences но это несколько не то. Я вообще не уверен что у вас получится даже со static. К примеру, в какой момент он обновляться должен?
 
например в начале цикла:
"Обрабатывается ... 1"
обработка
...
"Обрабатывается ... 2"
обработка
...
Сейчас попробую...
 
Нет я не то имел в виду. Вы создаете диалоговое окно - так? Пока окно активно, скрипт что-то делает с макетом, процесс идет и по мере его прохождения на диалоговом окне происходят некие изменения: прогрессбар двигается, статиктекст меняется и т.д. Так вот, я вовсе не уверен, что в иллюстраторовском модальном диалоге такие фокусы вообще технически возможны. Выполнение скрипта вообще может отрубать обработчик событий диалогового окна со всеми вытекающими.
 
возникла несколько бредовая идея - нарисовать новый слой перед вычислениями. В нем нарисовать два блока прямоугольных, один над другим. Во время выполнения подогнать фоновую полоску по ширине экрана(вписать в рабочую область). Ширина фонового - 100%, а ширину верхнего менять в зависимости от округленного значения доли от общего количества заданий. =))) По завершении - удалить новый слой с этими объектами. '))'
 
А как вы рабочую область экрана получите?
 
Выполнение скрипта вообще может отрубать обработчик событий диалогового окна со всеми вытекающими.
тогда может и не получиться создавать новое диалоговое окно с вычисленными параметрами и потом его скрывать? И так каждый цикл.
 
Не закрывая первое организовывать новый модальный диалог? Что-то как то черезчур...
 
А как вы рабочую область экрана получите?
по крайней мере в самом Illustrator'е я подгонял монтажную область под выделенный объект (клавиша F3), а потом Подогнать монтажную область по размеру окна (Ctrl+ 0[ноль] ).
 
создал кнопку, при нажатии на которую обновляется value прогрессбара. При нажатии полоса двигается, во время автоматической работы - не обновляется. Еще один костыльный вариант - создать кнопку, скрыть ее, и во время каждого цикла инициировать клик на ней... Если есть такая возможность
 
создал кнопку, при нажатии на которую обновляется value прогрессбара. При нажатии полоса двигается, во время автоматической работы - не обновляется. Еще один костыльный вариант - создать кнопку, скрыть ее, и во время каждого цикла инициировать клик на ней... Если есть такая возможность
Разумеется нет. Это как раз подтверждает мои подозрения - действительно события диалогового окна блокируются. Таким образом, ничего ни нажать ни поменять ни перерисовать нельзя. :(
 
  • Спасибо
Реакции: Larvatus
Я делаю так
myProgressBar.value++;
myProgressBarWindow.hide();
myProgressBarWindow.show();

моргает, но апдейтится

проблема, правда, была в CS5 на Windows, на маке вроде все и так ок. У вас Windows?

Выполнение скрипта вообще может отрубать обработчик событий диалогового окна со всеми вытекающими.

ну, не отрубает. но проблема в том, что весь скрипт вместе с UI в одном треде, поэтому, например, во время обработки документов нажать на кнопку в диалоге несколько проблематично. впрочем, к прогрессбару это отношения не имеет.
 
  • Спасибо
Реакции: Larvatus
Статус
Закрыто для дальнейших ответов.