Различие скриптинга CS2 и CS3-5

  • Автор темы Автор темы chesen
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

chesen

Топикстартер
20 лет на форуме
Сообщения
553
Реакции
49
В скриптах CS3-5 есть функция docRef.suspendHistory.
CS2 на ней спотыкается и скрипт далее не выполняется.
Как обойти эту проблему, заменив только эту строку и продолжить выполнение условий?
 
Возможно, в скриптовании фотошопа есть и более элегантное решение, но 100% будет работать финт с обработкой исключений:
Код:
try {
        блок, который, возможно, создаст рантайм-ошибки;
} catch ( err ) {
       блок, выполняющийся при ошибке, может быть и пустым.
}

Если интересны конкретные изменения в скриптинге разных версий, то можно почитать кучку мануалов с официального сайта. Разделы наподобие «Changes since earlier versions» в первых главах содержат конкретику.
 
Последнее редактирование:
Да вообще можно убрать, насколько понял эта строка делает только одну отмену в истории, вместо всех действий скрипта.
Код:
public function suspendHistory(historyString:String, javaScriptString:String):void
Ну или точнее оставить вызов в последнем аргументе.
 
Да вообще можно убрать, насколько понял эта строка делает только одну отмену в истории, вместо всех действий скрипта.
Не-а. «Allows a single undo for all actions taken in the script.»
Заморозка истории действий позволяет одной отменой вернуть все, что натворит скрипт.
 
Угу, только этот скрипт передается аргументом... Соответственно аргумент нужно вызвать нативно.
 
Ловля ошибки не помогает. Скрипт играет без остановки и результата. Надо менять первую часть строки, но оставить дальнейшие вызовы.
Может что-то типа app.purge(PurgeTarget.HISTORYCACHES); ?
 
Приведите проблемную строчку полностью.
 
Код:
* Автор:  PavelK (Riflio)
*/
   
   

if (!app.documents.length > 0) { //--если нет активных документов
alert('Нет документа для работы!');
} else {
    if (app.activeDocument.artLayers.length<=1) {
        alert('Нет слоёв для работы! Слои должны быть в корне, не в папках/группах!');
    } else {
        app.preferences.rulerUnits = Units.PIXELS;
        app.preferences.typeUnits = TypeUnits.PIXELS;
        var _docRef = app.activeDocument;  //-- получили документ, в котором работаем    
         _docRef.suspendHistory('ChaosLayers', 'Init()'); //-- Что бы в истории вместо кучи действий было только одно это
     }
}
 
Такая же беда во всех скриптах для CS3 при запуске на CS2
 
Код:
 _docRef.suspendHistory('ChaosLayers', 'Init()'); //-- Что бы в истории вместо кучи действий было только одно это
заменить на
Код:
Init();
 
  • Спасибо
Реакции: chesen
даже не так. Правильнее - по возможности сохранять функционал, при невозможности - не париться и использовать стабильную альтернативу:
Код:
try {
    _docRef.suspendHistory('ChaosLayers', 'Init()');
} catch (err) {
   Init();
}
 
Спасибо, все срослось. Вроде все просто, но в полтинник лет основы программирования не хотят укладываться под пену других навыков и умений:)
 
Архиполезный скрипт для работы со слоями тоже не играет с CS2. Различии, видимо, в интерфейсе.
Есть ли возможность запустить?
 

Вложения

Статус
Закрыто для дальнейших ответов.