Pesan jendela sementara Javascript/ExtendScript/ScriptUI

seharusnya ini relatif sederhana. Saat menulis skrip untuk Adobe InDesign CS6, saya ingin jendela/palet muncul sebentar, sekitar dua detik untuk memberi tahu pengguna bahwa akhir skrip berhasil dicapai. Bagaimana saya bisa melakukan ini?


person Sturm    schedule 18.06.2013    source sumber


Jawaban (2)


coba ini:

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;
}
person fabianmoronzirfas    schedule 19.06.2013

Jawaban Anda memberi saya ide untuk skrip saya: alih-alih hanya menampilkan pop-up yang bertuliskan "Saya selesai!", tampilkan bilah kemajuan! Jadi, dengan menggunakan dokumen ScriptUI untuk boneka, saya dapat menemukan kode berikut untuk awal skrip:

// 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();

Kemudian, di seluruh skrip, membumbuinya dengan pernyataan progress.value += 1; (biasanya setiap kali satu proses telah selesai), yang berjumlah 27. Di akhir fungsi utama, saya menghilangkan baris progress.parent.close(); sederhana. Terakhir, setelah fungsi utama, saya memasukkan fungsi 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;
}

Dan sepertinya itu berhasil! Bilah kemajuan muncul, merangkak ke akhir saat memproses file, lalu setelah bilah kemajuan ditutup, skrip selesai! Terima kasih telah mengarahkan saya ke arah yang lebih baik, fabiantheblind!

person Sturm    schedule 19.06.2013
comment
Merupakan layanan yang luar biasa bagi komunitas jika Anda meluangkan waktu untuk membagikan solusi akhir Anda. Kami menghargainya, dan ini pasti akan membantu orang-orang yang memiliki kebutuhan serupa. Namun, Anda tetap harus menerima solusi yang menjawab pertanyaan awal Anda. - person dln385; 19.06.2013
comment
Terima kasih, dln385. Saya masih pemula, seperti yang Anda tahu, dan belum paham dengan etiket situs ini. - person Sturm; 19.06.2013