Photoshop ScriptUI:显示一个对话框窗口,关闭它,再次显示它会给出一个空的全尺寸窗口

时间:2016-08-01 14:30:21

标签: javascript dialog photoshop extendscript

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

为简化起见,请采用以下工作示例。窗口是在循环外部定义的,除了这里剥离的其他步骤之外,窗口在循环的每一步都显示一次:

#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
}

当你执行它时,一个只有一个&#34; OK&#34;的小对话窗口。按钮出现,如预期的那样。您可以使用&#34;确定&#34;关闭它。按钮。 但是每个连续的w.show()都会产生一个几乎填满整个屏幕的空白窗口,没有任何控件。只能使用ESC键关闭它。

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

检查w变量后,显然bounds分别locationsize发生了变化。我尝试将这些值重置为先前的状态,并恢复窗口大小。但是,按钮仍然不可见。

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

1 个答案:

答案 0 :(得分:1)

尝试此代码,它适用于Photoshop CC + OSX。

w.close()销毁对话框窗口,因此您应该再次创建。

按一个名为&#39; ok&#39;的按钮,按返回键与w.close()相同。

&#13;
&#13;
#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
}
&#13;
&#13;
&#13;