Photoshop ScriptUI:显示一个对话框 window,关闭它,再次显示它给出一个空的完整尺寸 window

Photoshop ScriptUI: Show a dialog window, close it, show it again gives an empty full size window

在我用 JavaScript 编写的 Photoshop CC 2015 (Windows 10) 脚本中,我正在循环处理活动文档的所有图层,并希望在每个图层中显示一个设置对话框步骤。

为简化起见,采用以下工作示例。 window 在循环外定义,在此处剥离的其他步骤中,window 在循环中的每一步显示一次:

#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" 按钮的小对话框 window,正如预期的那样。您可以使用 "OK" 按钮关闭它。 但是每个连续的 w.show() 都会产生一个几乎填满整个屏幕的空白 window,没有任何控件。 它只能使用 ESC 键关闭。

我尝试覆盖 b.onClick 事件并手动调用 close(),但这并没有改变任何东西。

检查 w 变量后,很明显 boundslocationsize 不知何故发生了变化。我尝试将这些值重置为它们以前的状态,并且 window 大小已恢复。但是,该按钮仍然不可见。

我错过了什么吗?如何让对话框 window 多次正确显示?

试试这个代码,它适用于我的 Photoshop CC + OSX。

w.close()销毁对话框window,所以你应该重新创建。

按下名为 'ok' 的按钮,按下 return 键与 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
}