0

在我用 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
}

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

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

在检查w变量后,很明显bounds, 分别locationsize某种方式发生了变化。我尝试将这些值重置为之前的状态,然后窗口大小就恢复了。但是,该按钮仍然不可见。

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

4

1 回答 1

2

试试这个代码,它适用于我的 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
}

于 2016-08-02T01:21:54.947 回答