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?
Pesan jendela sementara Javascript/ExtendScript/ScriptUI
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;
}
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!