NEWは(絶対COORDSを取得し、SVG)の小さな機能に修正する http://codepen.io/cmer41k/pen/pRJNww/UPDATED: だからここcodepenのコードです::Javascriptのロジックは
現在UpdateCoords(ドラッグ)は機能 - コードではコメントアウトされています。 。
私が欲しかったのは、パスの座標(ここでは円としてのパス)を絶対パスに更新し、変換属性を削除することでした。
しかし、私はそれを行うに失敗しています。((ごめんのみ
OLD学習:私は経由ルートのSVG OBJ(SVG)を中心にドラッグしますSVG要素(パス)を持っている私のコードでは
をプロパティ「(x、y)を変換する」=変換。
私は絶対座標を使用して変換を取り除くために、このようなパス要素の属性「D」(すべてのCOORDSを説明する文字列)を更新したい\ものを翻訳します。
基本的に: は、d = "M10,10 30,10 20,30" + transform = "translate(20,0); は次のようになります:d = "M30,10 50,10 40,30" + transform = "translate(0,0)"(またはトランスフォームを削除できる場合はさらに良い)
私のためのものですが、適切な結果を妨げるバグがあります。
私はここで何か間違ったことをやっていると確信しています:
var v = Object.keys(path.controlPoints).length
//制御点ここでは、私はパスのCOORDSを保存するパスオブジェクト内だけの場所です。
var matrix = path.transform.baseVal.consolidate();
//私は、上記の行が適切なx、y変換された値を持つ適切な変換行列を与えることを検証しました。今私は、パスのすべての制御点(座標)をループしようと更新しています以下
for (i=0; i<v; i++) {
var position = svg.createSVGPoint();
position.x = path.controlPoints["p"+i].x;
position.y = path.controlPoints["p"+i].y;
//私は(またはので、私は思う)行列データを活用することができ、中間svgpointを作成するパスのコントロールポイントの各々のためのように、古い索引を新しいものに「変換する」。
position = position.matrixTransform(matrix);
path.controlPoints["p"+i].x = position.x;
path.controlPoints["p"+i].y = position.y;
}
//私は多分その私がこのループやなめらかで、この位置事をリセット/「掃除」ではないのですので、私はここで何か間違ったことをやっていると確信していますか?
申し訳ありません私はプログラマーではなく、物事を学ぶだけです。このコードでは、私が記述した目的を達成するためにこのコードを使用しました。
私たちはあなたを助けるためにのためにあなたが[MCVE]を作成し、質問にだけではなく、ここで私たちのコードの抜粋を与えていることを追加している場合には最も簡単になりますそこ。 –
また、あなたは「何か間違っている」と言っていますが、正確にはそれが何であるかは言いません。 –
良い点、私はcodepenまたは何かへのリンクを追加します –