InDesign CS5脚本:如何在“n”秒后打开和关闭弹出窗口?

时间:2012-07-12 19:54:43

标签: javascript window adobe-indesign

窗口打开正常,但脚本将继续,直到手动关闭弹出窗口!这是不可取的,因为我宁愿窗口在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

1 个答案:

答案 0 :(得分:1)

对话框类型窗口是模式对话框,可防止任何后台操作。然而,即使使用非模态窗口,我也不确定您是否可以从同一个脚本中并行执行这两个例程。我很确定脚本引擎会等待你的延迟程序结束然后继续移动:\

我能处理这种异步处理的唯一方法是将swiif文件结合起来使用scriptUI,并在AS3中完成任何计时器操作。这样,您可以让脚本执行在InDesign中继续运行并让您的循环在swf文件中运行。我这样做曾经特别是为了监控一个热门文件夹。

BTW:你的代码中有错误=&gt; message.add(“StaticText”,undefined,... 那应该是小写的statictext;)