0

現在選択されている頂点/頂点ポイントで動作する JSFL コマンドを作成しようとしていますが、現在選択されているポイントにアクセスする方法が見つかりません..

JSFL リファレンスを検索しましたが、選択した頂点を処理する唯一のメソッドは moveSelectedBezierPointsBy(); です。

4

2 に答える 2

1

同様の問題を解決しようとして、私はいくつかの汚いトリックを作ります。

// array for some manipulations
var selPoints = new Object();

// array with all points in layer[0] and frames[0] 
var allBezierPoints = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].vertices

// read and write all points coord
for ( i in allBezierPoints ) {
    selPoints[i] = { x:allBezierPoints[i].x, y:allBezierPoints[i].y }   
}

// now dirty trick - move selected points by 1 px on X
fl.getDocumentDOM().moveSelectedBezierPointsBy({x:1, y:0});

// reseting all points
allBezierPoints = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].vertices

// compare old coord and new coord of all points
for ( i in allBezierPoints ) {
    // if coords similar, ther erase this point from array
    if ( allBezierPoints[i].x == selPoints[i].x ) delete selPoints[i];
}

// move selected points back
fl.getDocumentDOM().moveSelectedBezierPointsBy({x:-1, y:0});

// now we have array with selected points and they coordinates
for ( i in selPoints) {
    fl.trace ( "Point " + i + " X: "+selPoints[i].x +", Y: "+ selPoints[i].y)
}
于 2013-06-04T13:24:20.690 に答える