2016-08-01 71 views
0

在我用JavaScript編寫的Photoshop CC 2015(Windows 10)腳本中,我正在處理活動文檔的所有圖層循環,並希望在每個步驟中顯示設置對話框。Photoshop ScriptUI:顯示一個對話窗口,關閉它,再次顯示一個空的全尺寸窗口

爲了簡化,請參閱以下工作示例。該窗口外循環定義,和在這裏剝離等步驟中,顯示在窗口中循環的每一步一次:

#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分別爲locationsize發生了某種變化。我嘗試將這些值重置爲其先前的狀態,並且窗口大小被恢復。但是,該按鈕仍然不可見。

我錯過了什麼嗎?我如何讓對話窗口多次顯示正確?

回答

1

試試這段代碼,它適用於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 
 
}

+0

謝謝!有用!我不知道'close()'破壞了窗口。 – Flo

+0

事實上,我在官方手冊或其他資料中沒有發現任何暗示。這應該被添加... – Flo