d3トランジションでプレイしようとしています。私はトランジションとローテーションの両方を行う必要があります。 私は元の座標を持っています:d3 translateでトランジション順の回転
let data = [
{x: 100, y: 100, rotation: 45},
];
と2つの長方形。 1つは翻訳を最初に行い、もう1つは回転を 最初に実行しています。
これは、四角形を描画した後変換結果されています、彼らは同じ翻訳し、回転変換を持っている
transform="rotate(45 115 105) translate(100, 100)"
transform="translate(100, 100) rotate(45 115 105)"
異なり唯一のものは、それらのオーダーです。
その後、私はデータを変更します
transform="rotate(90 145 125) translate(130, 120)"
transform="translate(130, 120) rotate(90 145 125)"
しかし、私が本当に取得すると、このです:
data[0].x += 30;
data[0].y += 20;
data[0].rotation += 45;
と私はいくつかの遷移がこの変換で終わる得ることを期待する
transform="translate(150, 110) rotate(90)"
transform="translate(400, 100) rotate(90)"
- 通知の順序が変更されます。最初の矩形に対して回転します。
- また、回転変換から回転中心を削除します(移行中に何らかの形で計算しますか?)
- 結果の数値はどのように取得されますか?
d3移行はどのように機能しますか?私はいくつかのより進歩したトランジションでプレイしようとしているので、期待できる結果を得る必要があります。ここで
は簡単な例です:https://jsfiddle.net/pp6npw4g/2 (遷移を開始するために移動をクリック)
あなたのJSFiddleではあなたは '.attr( 'transform'、(d)=> transformFunction()をやっていますが、実際の問題とは関係ありませんが、 d)); 'は、' transformFunction() 'への呼び出しをもう一つの無名関数にラップします。これは、基本的に '.attr( 'transform'、transformFunction);と同じです。関数への参照を渡すだけです。 – altocumulus
私は知っています、それは単なる例です。実際のアプリケーションでは、ただ一つの関数呼び出しだけでなく、そこにもっと多くのものを用意しています。しかし、あなたは正しいです、この例では、単純化することができます。 – Klinki
心配しないで!多くの人々がそれについて混乱しているだけです。シンプルなままにして、コード全体をダンプするのではなく、削除した例を提供してください! – altocumulus