我有一个插图文档,上面有各种文本和路径项。我想循环遍历所有文本项并更改它们的颜色,以及一些属性。然后根据项目名称,我想将其与其他具有相同名称的项目分组。我有一个几乎可以工作的脚本。问题是它会丢弃一些项目,或者不一致地忽略它们。有时会影响它们,有时它会忽略它们。任何帮助表示赞赏,下面的脚本
//Selects the graph before to scale them and turns off the pixel align so that values of 1 decimal place can be applied to strokes
doc.selectObjectsOnActiveArtboard();
var sel = doc.selection;
sel.pixelAligned=false
var item
var xLabels = layer.groupItems.add(); //create group for xAxis
xLabels.name="xLabels"
var yLabels = layer.groupItems.add(); //create group for xAxis
yLabels.name="yLabels"
var yTicks = layer.groupItems.add(); //create group for xAxis
yTicks.name="yTicks"
//Loops through ungrouped text items and set horizontal scale, spot black and tabular lining on figures
for (var i = 0; i < layer.textFrames.length; i++) {
item=layer.textFrames[i];
$.writeln (item)
item.textRange.characterAttributes.textFont = textFonts.getByName("Metric-Regular");
item.textRange.characterAttributes.figureStyle=FigureStyleType.TABULAR
item.textRange.characterAttributes.fillColor=myBlack;
//move labels on xAxis into the same group
if (item.name=="xAxisLabel") {
item.moveToEnd(xLabels);
}
//move labels on yAxis into the same group
if (item.name=="yAxisLabel") {
item.moveToEnd(yLabels);
};
};
for (var i = 0; i < layer.pathItems.length; i++) {
item=layer.pathItems[i];
if (item.name=="yAxisTick") {
item.moveToEnd(yTicks);
};
};
答案 0 :(得分:1)
解决方法是扭转循环。基本上,当您将项目移动到一个组中时,它会更改页面上“松散”文本项的数量,以便您的循环长度在中途有效地发生变化。可以在https://forums.adobe.com/thread/2171307找到对此的良好视觉解释,我也在那里发布了问题