我正在使用ExtendScript编写JavaScript中的Photoshop脚本。我的脚本允许一些用户输入,并且我想在使用之间保存它们。也就是说,我正在寻找一种方法来保存一个特定键下的简单字符串或数字值,以便我能够在脚本的后续使用中访问它。简单地说,我想为我的脚本保存一个首选项。如何实现这一点?
更好的是,能否按文档保存至少一些首选项?那可能吗?也就是说,我可以将任意数据与文档一起存储吗?
更好的是,能否按文档保存至少一些首选项?那可能吗?也就是说,我可以将任意数据与文档一起存储吗?
您可以使用put/get自定义选项来保存偏好参数,这些参数在Photoshop启动时保持不变:
const kMyFlag = app.stringIDToTypeID( "myFlag" );
const kMyNumber = app.stringIDToTypeID( "myNumber" );
const kMySettings = "mySettings";
function saveSettings()
{
var desc = new ActionDescriptor();
desc.putBoolean(kMyFlag, true);
desc.putInteger(kMyNumber, 42);
// "true" means setting persists across Photoshop launches.
app.putCustomOptions( kMySettings, desc, true );
}
function getSettings()
{
var desc = app.getCustomOptions( kMySettings );
return [desc.getBoolean( kMyFlag ), desc.getInteger( kMyNumber )];
}
ActionDescriptor
应该是用来做什么的?保存偏好设置吗?在Illustrator中,我们有专门用于此目的的Preferences
。 - Hendra AnggrianActionDescriptor
是一种通用的结构,用于从脚本传递事件和相关数据到应用程序。存储首选项是其中之一,还有许多其他用途。 - J. PetersonFile
对象创建文本文件并写入其中:var prefs = new File("~/desktop/prefs.txt");
prefs.open("w"); // or "a" to append
prefs.writeln("user:lenny;favorite_color:ff6600;likes:sunsets;");
Document.info
将字符串写入文件的元数据字段之一(例如 'instructions' 字段),示例如下:var doc = app.activeDocument;
doc.info.instructions = "user:lenny;favorite_color:ff6600;likes:sunsets;";
//alert(doc.info.instructions); // see, it works!
关于如何实际格式化字符串,您可以像简单的配置文件一样执行它。如果您有一个复杂的用户首选项对象,则可以使用XML
对象构建并序列化它。 JSON很适合这个任务,但不幸的是,在Extendscript中没有JSON对象。
对于每个文档的首选项,我建议使用XMP元数据。你可以在这里找到示例代码:http://forums.adobe.com/thread/790973。你可以利用AdobeXMPScript库创建自己的命名空间,就像Paul Riggott在链接中建议的那样。