【发布时间】:2014-05-19 13:10:41
【问题描述】:
我正在制作一个 Illustrator CS6 Javascript,它执行以下操作:
- 打开一个包含 Illustrator 文件的文件夹
- 打开文件夹中的每个文件(这些文件称为源文件)
- 选择源文件的所有内容
- 复制源文件的内容
- 创建一个新的目标文件将这些内容粘贴到目标文件中作为一个新层
- 确保新层与旧源文件同名
我的脚本可以正常工作,只是它不能正确循环源文件夹中的文件。相反,它在第一个源文件上运行良好。但随后它会无休止地将第二个源文件粘贴到目标文档中(即它不会移动到任何其他源文件)。它只是无休止地粘贴,所以我不得不强制退出!
我怎样才能让它正确地遍历文件夹然后移动到下一个文件。
这是我的代码:
// JavaScript Document
//Set up vairaibles
var destDoc, sourceDoc, sourceFolder, newLayer;
// Select the source folder.
sourceFolder = Folder.selectDialog('Select the folder with Illustrator files that you want to mere into one', '~');
destDoc = app.documents.add();
// If a valid folder is selected
if (sourceFolder != null) {
files = new Array();
// Get all files matching the pattern
files = sourceFolder.getFiles();
if (files.length > 0) {
// Get the destination to save the files
for (i = 0; i < files.length; i++) {
sourceDoc = app.open(files[i]); // returns the document object
var myLayers = sourceDoc.layers; // Select All layers in Active Document
//Go through all layers of source document and copy artwork
for (i = 0; i < myLayers.length; i++) {
myLayers[i].hasSelectedArtwork = true;
};
with(sourceDoc) {
var count = pageItems.length;
for (var i = 0; i < count; i++) {
pageItems[i].selected = true;
}
redraw();
copy();
for (var i = 0; i < count; i++) {
pageItems[i].selected = false;
}
}
//Create a new title variable that has the title of the source document
var title = sourceDoc.name;
var title = title.substring(0, title.length - 4); //(remove extension from name)
//Close the Source Document
sourceDoc.close(SaveOptions.DONOTSAVECHANGES);
//Open the Destination Document and create a new layer in it that is named after the title variation
newLayer = destDoc.layers.add();
newLayer.name = title;
//Paste into this new layer
newLayer = app.paste();
}
}
else {
alert('No matching files found');
}
}
附言。我不确定是否应该在Code Review 或Graphic Design 中发布此内容,但我认为堆栈溢出是发布此内容的最佳位置,因为这是关于javascript 循环的一般问题,所以我希望这是正确的地方。
【问题讨论】:
标签: javascript loops adobe-illustrator