2016-08-01 7 views
0

В моем скрипте для Photoshop CC 2015 (Windows 10), написанном на JavaScript, я обрабатываю все слои активного документа в и хотите показать диалог настройки на каждом шаге.Photoshop ScriptUI: Показать диалоговое окно, закрыть его, показать его снова дает пустое окно полного размера

Для упрощения рассмотрим следующий рабочий пример. Окно вне цикла, так и среди других шагов, которые раздели здесь, окно отображается один раз каждый шаг в цикле:

#target photoshop 

var w = new Window('dialog', 'Title'); 
var b = w.add('button', undefined, 'OK'); 

for (var i = 0; i < 3; i++) { 
    // other code 
    w.show(); 
    // other code 
} 

При выполнении этого, небольшое диалоговое окно с только один «OK» появляется кнопка, как и ожидалось. Вы можете закрыть его, нажав кнопку «ОК». Но каждый последующий w.show() создает пустое окно, которое почти заполняет весь экран, без каких-либо элементов управления. Его можно закрыть только клавишей ESC.

Я попробовал переопределить событие b.onClick и вручную позвонить по номеру close(), но это ничего не изменило.

При проверке переменной w, то очевидно, что bounds соответственно location и size каким-то образом изменилось. Я попытался сбросить эти значения до их предыдущего состояния, и размер окна будет восстановлен. Однако кнопка все еще не видна.

Я что-то упустил? Как я могу заставить диалоговое окно отображаться правильно несколько раз?

ответ

1

попробуйте этот код, он работает для меня с помощью Photoshop CC + OSX.

w.close() разрушить диалоговое окно, чтобы вы снова создали.

нажмите кнопку «ОК», нажмите клавишу возврата, как и у w.close().

#target 'photoshop' 
 

 
for (var i = 0; i < 3; i++) { 
 
    var w = W(); 
 
    $.writeln(w.show()); 
 
} 
 

 
function W() { 
 
    var w = new Window('dialog', 'Title'); 
 
    var b = w.add('button', undefined, 'OK', {name:'ok'}); 
 
    return w 
 
}

+0

Спасибо! Оно работает! Я не знал, что 'close()' уничтожает окно. – Flo

+0

На самом деле я не нашел в этом никаких намеков в официальных руководствах или других источниках. Это нужно добавить ... – Flo