问题描述
我试图在 Photoshop 中遍历创建路径以找出锚点位置等
var srcDoc = app.activeDocument;
// create the array of PathPointInfo objects
var lineArray = new Array();
lineArray.push(new PathPointInfo());
lineArray[0].kind = PointKind.CORNERPOINT;
lineArray[0].anchor = new Array(20,160);
lineArray[0].leftDirection = [35,200];
lineArray[0].rightDirection = lineArray[0].anchor;
lineArray.push(new PathPointInfo());
lineArray[1].kind = PointKind.CORNERPOINT;
lineArray[1].anchor = new Array(20,40);
lineArray[1].leftDirection = lineArray[1].anchor;
lineArray[1].rightDirection = [220,260];
// create a SubPathInfo object,which holds the line array in its entireSubPath property.
var linesubPathArray = new Array();
linesubPathArray.push(new SubPathInfo());
linesubPathArray[0].operation = ShapeOperation.SHAPEXOR;
linesubPathArray[0].closed = false;
linesubPathArray[0].entireSubPath = lineArray;
//create the path item,passing subpath to add method
var myPathItem = srcDoc.pathItems.add("A Line",linesubPathArray);
for (var i = 0; i < linesubPathArray[0].entireSubPath.length; i++)
{
var b = linesubPathArray[0].entireSubPath[i].anchor;
alert(b);
}
这很好用,但不是创建路径并找出它的信息,而是我想遍历每个路径并获得相同的信息。这应该与上面的循环相同,只是没有显式调用 linesubPathArray
及其部分。
for (var i = 0; i < srcDoc.pathItems[0].subPathItems.pathPoints.length; i++) // wrong I think
{
var b = srcDoc.pathItems[0].entireSubPath[i].anchor; // wrong
alert(b);
}
解决方法
几乎:您需要遍历由 subPathItems
组成的 pathPoints
:
var srcDoc = activeDocument;
var workPath = srcDoc.pathItems[0];
var i,k,b;
for (i = 0; i < workPath.subPathItems.length; i++) {
for (k = 0; k < workPath.subPathItems[i].pathPoints.length; k++) {
b = workPath.subPathItems[i].pathPoints[k].anchor;
alert(b);
}
}