窗口打开正常,但脚本将不继续,直到手动关闭弹出窗口!这是不可取的,因为我宁愿窗口在n
秒后关闭...
那么我是否必须在与脚本其余部分分开的线程中打开窗口?这甚至可能吗?
到目前为止,这是我的代码:
function showMessageWindow()
{
var script = getScriptName(); // initialized from the function below
var message = new Window("dialog", script);
message.add("StaticText", undefined, "The script " + script + " is now running, please wait...");
message.show();
var startTime = new Date().getTime(); // in milliseconds
var currentTime = new Date().getTime(); // in milliseconds
var waitTime = 5000; // 1000 milliseconds is 1 second
var delay = function()
{
while( (currentTime - startTime) < waitTime)
{
currentTime = new Date().getTime(); // in milliseconds
}
} // end of closure delay
delay(); // calling the delay closure function here
message.close(); // close the message after the specified delay time
} // end of function showMessageWindow
// called from the function showMessageWindow
function getScriptName()
{
var scriptName = "";
try
{
scriptName = File(app.activeScript).name;
}
catch(e)
{
scriptName = File(e.fileName).name;
}
return scriptName;
} // end of function getScriptName
答案 0 :(得分:1)
对话框类型窗口是模式对话框,可防止任何后台操作。然而,即使使用非模态窗口,我也不确定您是否可以从同一个脚本中并行执行这两个例程。我很确定脚本引擎会等待你的延迟程序结束然后继续移动:\
我能处理这种异步处理的唯一方法是将swiif文件结合起来使用scriptUI,并在AS3中完成任何计时器操作。这样,您可以让脚本执行在InDesign中继续运行并让您的循环在swf文件中运行。我这样做曾经特别是为了监控一个热门文件夹。
BTW:你的代码中有错误=&gt; message.add(“StaticText”,undefined,... 那应该是小写的statictext;)