0

JavaScript で記述された Photoshop CC 2015 (Windows 10) 用のスクリプトで、アクティブなドキュメントのすべてのレイヤーをループで処理しており、各ステップで設定ダイアログを表示したいと考えています。

簡単にするために、次の作業例を取り上げます。ウィンドウはループの外側で定義され、ここで取り除かれる他のステップの中で、ウィンドウはループ内のステップごとに 1 回表示されます。

#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] ボタンが 1 つだけある小さなダイアログ ウィンドウが表示されます。「OK」ボタンで閉じることができます。しかし、連続するたびw.show()に、画面全体をほぼ埋め尽くす空白のウィンドウが生成され、コントロールはまったくありません。ESCキーでしか閉じることができません。

イベントをオーバーライドしてb.onClick手動で呼び出してみましclose()たが、何も変わりませんでした。

変数を調べると、それぞれとが何らかの形で変更されwていることが明らかです。これらの値を以前の状態にリセットしようとしたところ、ウィンドウ サイズが復元されました。ただし、ボタンはまだ表示されません。boundslocationsize

何か不足していますか?ダイアログ ウィンドウが複数回正しく表示されるようにするにはどうすればよいですか?

4

1 に答える 1