3

これは比較的単純なはずです。Adobe InDesign CS6 のスクリプトを作成しているときに、ウィンドウ/パレットを短時間 (たとえば約 2 秒) 表示して、スクリプトの最後に正常に到達したことをユーザーに通知したいと考えています。どうすればこれを行うことができますか?

4

2 に答える 2

4

これを試して:

main();
function main(){
      var progress_win = new Window ("palette");
var progress = progress_bar(progress_win, 2, 'Doing Something. Please be patient');
    delay(1);
      progress.value = progress.value+1;
    delay(1);
    progress.parent.close();
    }

// delay function found here
//found here http://www.wer-weiss-was.de/theme157/article1143593.html
  function delay(prmSec){
  prmSec *= 1000;
  var eDate = null;
  var eMsec = 0;
  var sDate = new Date();
  var sMsec = sDate.getTime();
  do {
  eDate = new Date();
  eMsec = eDate.getTime();
  } while ((eMsec-sMsec)<prmSec);
  }
/**
 * Taken from ScriptUI by Peter Kahrel
 * 
 * @param  {Palette} w    the palette the progress is shown on
 * @param  {[type]} stop [description]
 * @return {[type]}      [description]
 */
function progress_bar (w, stop, labeltext) {
var txt = w.add('statictext',undefined,labeltext);
var pbar = w.add ("progressbar", undefined, 1, stop);
pbar.preferredSize = [300,20];
w.show ();
return pbar;
}
于 2013-06-19T06:55:55.427 に答える
4

あなたの答えは、私のスクリプトのアイデアを提供してくれました。「完了しました!」というポップアップを表示する代わりに、プログレス バーを表示してください! そのため、 ScriptUI for dummies documentを使用して、スクリプトの冒頭に次のコードを作成することができました。

// Creating a progress bar window.
var w = new Window("palette");
var progress = progress_bar(w, 27);
var currentDoc = w.add("statictext");
currentDoc.text = "Processing " + document.name;
w.show();

次に、スクリプト全体でprogress.value += 1;(通常は 1 つのプロセスが完了するたびに) ステートメントを追加し、合計で 27 になりました。メイン関数の最後に、単純なprogress.parent.close();行を 1 つ落としました。最後に、メイン関数の後に、関数をドロップしましたprogress_bar()

/**
 * Creates the actual progress bar object
 *
 * @param {Palette} w The pallette the progress is shown on
 * @param {number} stop The value which represents 100% of the progress bar
 */
function progress_bar(w, stop) {
    var pbar = w.add("progressbar", undefined, 1, stop);
    pbar.preferredSize = [300, 20];
    return pbar;
}

そして、それはそれを行うようです!プログレス バーが表示され、ファイルの処理中に最後までクロールし、プログレス バーが閉じたら、スクリプトは完了です。fabiantheblind さん、私をもっと良い方向に向けてくれてありがとう!

于 2013-06-19T15:56:10.683 に答える