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

ダイアログ タイプのウィンドウは、バックグラウンド操作を防止するモーダル ダイアログです。ただし、非モーダル ウィンドウでも、同じスクリプトから両方のルーチンを並列実行できるかどうかはわかりません。スクリプト エンジンは、私たちの遅延ルーチンが終了するのを待ってから、移動を続けると確信しています :\

このような非同期プロセスに対処できる唯一の方法は、scriptUI を swf ファイルと組み合わせて使用​​し、AS3 でタイマー処理を実行することでした。そうすれば、スクリプトを実行して InDesign 内で移動し、swf ファイルでループを実行できます。特にホットフォルダーを監視するために、一度それを行いました。

ところで:あなたのコードに間違いがあります=> message.add("StaticText", undefined,…それは小文字のstatictextでなければなりません;)

于 2012-07-12T21:46:39.600 に答える