Исчезающая панель

Я создал скрипт jsx, который создает настраиваемое диалоговое окно в иллюстраторе, которое позволяет мне загружать текстовый файл в строку. Кажется, все работает нормально в Extendscript, но в тот момент, когда я сохраняю его и запускаю автономно из Illustrator, диалоговое окно окно появляется и тут же исчезает. Любые идеи, я удалил все операторы $writeIn.

Я осмотрелся, но, похоже, в этом коде нет ничего похожего на это:

function init() {
dataFile=""//Load in paths to users day file and folder where spreadsheets are stored
var readFile = File(appPath+ "pathData"+".txt");
     if(readFile != null) {
         readFile.open('r')
         dataPath=readFile.read();
         readFile.close();
         dataPath=dataPath.replace(/[\n\r]/g, '');//Seems to need this as without there is a cariage return added to the end of the string somewhere in the saving of the file

         };
     else dataPath="Press button to set path to day folder";
    readFile = File(appPath+ "pathDay"+".txt");
    if(readFile != null) {
         readFile.open('r')
         dayPath=readFile.read();
         readFile.close()
         dayPath=dayPath.replace(/[\n\r]/g, '');//Seems to need this as without there is a cariage return added to the end of the string somewhere in the saving of the file
         //$.writeln("dayPath=",dayPath);
         };
     else dayPath="Press button to set path to day folder";

    var initPanel=new Window("palette","iPlot", undefined);
    initPanel.orientation="column"
    var group1=initPanel.add("group",undefined,"GroupOne");
    group1.orientation="column"
    var loadButton=group1.add("button",undefined,"Load data");
    loadButton.onClick = function() {
        initPanel.close();
        loadFile();
    };
    var closeButton=group1.add("button",undefined,"Close");
     closeButton.onClick = function() {
        //$.writeln("Close button pressed");
        initPanel.close();
    };
    var setipButton=group1.add("button",undefined,"Setup");
     setipButton.onClick = function() {
         setup()
    };
    initPanel.center();
    initPanel.show();
    return true;
    }

person Bob Haslett    schedule 02.04.2014    source источник


Ответы (1)


Палитры и диалоги «живут» только до тех пор, пока работает ваш скрипт. Насколько я понимаю (едва-едва), как только ваш скрипт "заканчивается", т.е. вы хотите работать вне панели в Illustrator, движок Extendscript считает, что закончился сам скрипт.

Обычное лекарство от этого — выделение частных ресурсов для вашего скрипта. Вы делаете это, создавая специальный «движок», который будет сохраняться в памяти. Следующие две строки делают свое дело, если добавить их в самом верху:

#target Illustrator
#targetengine main

Первый из них устарел, если вы запускаете свой сценарий из Illustrator, но он необходим, если вы запускаете его из другого места (например, из редактора Extendscript Toolkit). Второй устанавливает частный движок с указанным именем; в данном случае main, но если вы запускаете несколько палитр одновременно, вам нужны уникальные имена для каждой.

См. http://forums.adobe.com/thread/1238745 — в частности, саму последний пост.

person Jongware    schedule 02.04.2014
comment
Спасибо, это действительно полезно и помогает. Я обнаружил, что если я заменю два экземпляра нового окна (палитра... новым окном (диалоговое окно...) работает как временное исправление, но ваше решение помогает, когда я хочу, чтобы сценарий автоматически запускался при запуске и создавал плавающую палитру в иллюстраторе. - person Bob Haslett; 03.04.2014