在我用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
}
当您执行它时,会出现一个只有一个"OK"按钮的小对话框窗口,正如预期的那样。您可以使用"确定"按钮关闭它但每个连续的w.show()
都会产生一个空白窗口,几乎填满整个屏幕,没有任何控件只能使用ESC键关闭。
我尝试覆盖b.onClick
事件并手动调用close()
,但这并没有改变任何内容。
在检查w
变量时,很明显,bounds
、location
和size
以某种方式发生了变化。我尝试将这些值重置为以前的状态,然后窗口大小被恢复。但是,该按钮仍然不可见。
我是不是错过了什么?如何使对话框窗口正确显示多次?
试试这个代码,它适用于Photoshop CC+OSX。
w.close()
销毁对话框窗口,所以您应该重新创建。
按一个名为"ok"的按钮,按回车键与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
}