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



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

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

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

BTW:您的代码=>消息中有一个错误。add("StaticText",未定义,…应该是小写的statictext;)

最新更新