0

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

1 回答 1

1

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

我可以处理这种异步进程的唯一方法是结合 swf 文件使用 scriptUI,并在 AS3 中完成任何计时器的工作。这样您就可以在 InDesign 中继续执行脚本,并让您的循环在 swf 文件中运行。我这样做了一次,特别是为了监视一个热文件夹。

顺便说一句:您的代码中有错误 => message.add("StaticText", undefined,... 那应该是小写的 statictext ;)

于 2012-07-12T21:46:39.600 回答