скрипт фотошопа: принудительное обновление пользовательского интерфейса

У меня есть мой скрипт для работы, и я просто хочу добавить индикатор выполнения, чтобы показать прогресс (да!). Это тестовый сценарий, который я сделал, потому что обнаружил проблему в своем исходном сценарии. В исходном скрипте много операций открытия, сохранения, копирования, вставки и преобразований в цикле...

var StatusWindow = new Window("window","Production");

StatusWindow.size = [400,150];
StatusWindow.alignChildren = "left";
StatusWindow.TextProgress = StatusWindow.add("statictext",[0,0,200,0]);
StatusWindow.BarProgress = StatusWindow.add("progressbar",[0,0,200,12]);
StatusWindow.show();

for (n=0; n<100; n++) {
  StatusWindow.TextProgress.text = n;
  StatusWindow.BarProgress.value = n;
  $.sleep(100);
}
alert("Done!);

Сценарий запускается и показывает окно и индикатор выполнения. Затем ничего не обновляется в пользовательском интерфейсе, пока не появится окно предупреждения. Если я приостанавливаю выполнение скрипта (с помощью ExtendScript Toolkit CS5), пользовательский интерфейс обновляется с учетом текущего и корректного хода выполнения. Я знаю, что пользовательский интерфейс обычно обновляется только тогда, когда в системе «осталось» время, но это смешно!!!

Как я могу заставить Photoshop обновить пользовательский интерфейс, когда я тоже этого захочу?

//Спасибо.


person Max Kielland    schedule 22.08.2012    source источник


Ответы (2)


(Из инструментов JavaScript руководство) Вы можете использовать StatusWindow.update()

person spencewah    schedule 12.02.2013

Вы можете рассмотреть возможность использования app.refresh() или waitForRedraw(). Окно.update(), похоже, не решило эту проблему для меня.

Вот источник: http://www.davidebarranca.com/2012/10/scriptui-window-in-photoshop-palette-vs-dialog/

person user3526    schedule 31.07.2015