■default ---■fontsize --70% --80% --100% --120% --140% --- --■scroll_switch

setEntirePath で illegal argument

イラストレーターのジャバスクリプトの
PathItem のメソッドで
setEntirePath というのがある。
アンカーの配列を渡すと、そのポイントで線をなぞってくれる関数。
↓の様に使います。
----------------------
var アンカーのリスト配列 = [ [0,0],[0,1],[1,1],[1,0]];
var オブジェクト = レイヤー.pathItems.add();
オブジェクト.setEntirePath(アンカーのリスト配列);
//四角ができる。
----------------------
ところが。
使用していたら、illegal argument というエラーで止まる事が有ります。
調べたり試したりした所、どうやら1000ポイント以上描写しようとすると、止まるらしい。
ちなみにマニュアルには以下が書いてある。
--------------------------------
PathItem methods
Method :setEntirePath
Parameter type : (pathPoints) array of[x, y] coordinate pairs
Returns :Nothing
What it does :
Sets the path using an array
of points specified as [x, y]
coordinate pairs.
-----------------------
とくに1000ポイント以上はダメとか書いて無いのだけど、だめらしい。
しかも、setEntirePath だとハンドルを後で別設定しないといけないので、二度手間。
setEntirePathだからと言って特段早いわけではないので、以下の様にしたほうがよろしいようです。
-----------------------
function setEntirePath_ex (ov,ancs,lds,rds){
lds = lds ? lds : ancs ;
rds = rds ? rds : ancs ;
for(var i = 0 ; i < ancs.length ; i++ ) {
if( !ar_jg2(ancs[i])){continue}
if( !ar_jg2(lds[i]) ){ lds[i] = ancs[i];}
if( !ar_jg2(rds[i]) ){ rds[i] = ancs[i];}
var p = ov.pathPoints.add();
p.anchor = ancs[i];
p .leftDirection = lds[i];
p .rightDirection = rds[i];
}
}
function ar_jg2(ar){if( typeof ar != "undefined" && ar.length == 2 && ar[0] !="" && ar[1] !="" ){return true;}else{return false;}}

----------------------
var アンカーのリスト配列 = [ [0,0],[0,1],[1,1],[1,0],.......1000配列以上あっても大丈夫];
var オブジェクト = レイヤー.pathItems.add();
setEntirePath_ex(オブジェクト, アンカーのリスト配列,[必要だったらハンドル情報左,必要だったらハンドル情報右]);
----------------------
スポンサーサイト
ブログ内検索ワード
マジック / フラリッシュ / デザイン / ~のコツ / プログラム関連 /