これが私が見つけることができる最も近いものです-明らかではないため、ここに記録します。パス、円、楕円、長方形でテスト済み。セットでは機能しません (セットは直接変換されないため、内容に変換を適用する美化された配列にすぎません)。
Raphael 要素の完全な現在の変換状態をオブジェクトとして取得するには:
element.matrix.split();
そのオブジェクトの内容は次のとおりです (変換されていない要素のデフォルトが示されています)。
dx: 0
dy: 0
isSimple: true
isSuperSimple: true
noRotation: true
rotate: 0
scalex: 1
scaley: 1
shear: 0
したがって、Raphael 要素の x スケール条件を調べるには、 を使用できますelement.matrix.split().scalex;
。どのメソッドが設定されているかに関係なく、要素の回転状態を調べるには、element.matrix.split().rotate;
etc.dx
を使用でき、dy
値を変換することと同等です。
circle = paper.circle(5,5,5).attr('transform','s2,2');
alert(circle.matrix.split().scalex); // alerts 2
alert(circle.matrix.split().dx); // alerts 0
circle = paper.circle(5,5,5).attr('transform','m2 0 0 2 0 0');
alert(circle.matrix.split().scalex); // alerts 2
alert(circle.matrix.split().dx); // alerts 0
circle = paper.circle(5,5,5).attr('transform','t100,100');
alert(circle.matrix.split().scalex); // alerts 1
alert(circle.matrix.split().dx); // alerts 100
Raphael 要素の現在の変換状態を変換文字列として取得するには、最も近いものは次のようになります。
element.matrix.toTransformString();
...ただし、これには適用済みの変換のみが含まれます。たとえば、スケーリングが行われていない場合、s
のようなデフォルトのスケーリング変換文字列ではなく、文字列にセグメントがありませんs1,1,0,0
。
同様に、あなたがそうするなら...
Raphael.parseTransformString( element.matrix.toTransformString() );
...すべての値が存在するオブジェクトではなく、設定されていない値が欠落している配列を取得します。
element.matrix.split(); の出力を有効にする便利な関数はないようです。変換文字列に変換します (おそらく必要ありませんが)。