在用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
分别location
和size
发生了变化。我尝试将这些值重置为先前的状态,并恢复窗口大小。但是,按钮仍然不可见。
我错过了什么吗?如何让对话窗口多次正确显示?
答案 0 :(得分:1)
尝试此代码,它适用于Photoshop CC + OSX。
w.close()
销毁对话框窗口,因此您应该再次创建。
按一个名为&#39; ok&#39;的按钮,按返回键与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
}
&#13;