Sorun:
Bir SVG'yi d3.js v4.2.2 ile eşzamanlı olarak döndürmek ve çevirmek için genel bir çözüm bulmaya çalışıyorum.d3.js: Çevirirken merkezin etrafında bir SVG nasıl döndürülebilir?
SVG'yi doğru konumlarda başlatıp sonlandırabilirim, ancak aradaki gevşeme yanlıştır. Aşağıda, DOM'den alınmış aynı SVG'nin birçok örneğinde bir döndürme + çevirme yaptığım bir JSFiddle, her biri veri noktasına göre farklı bir miktar rotasyonudur.
Dikkat edilmesi gereken önemli bir nokta şudur: (100) 'den (500,500)' a (0) 'dan başladığım kadarıyla çeviri yaparken çalışmak için bu çözüme ihtiyacım var.
https://jsfiddle.net/3jbv23em/
var serializer = new XMLSerializer();
var svgNode = serializer.serializeToString(document.querySelector('#svgs svg defs svg'));
var dataset = [1,8,15,22,29,36,43,50,57,64,71,78,85,92,99,106,113,120,127,134,141,148,155,162,169,176,183,190,197,204,211,218,225,232,239,246,253,260,267,274,281,288,295,302,309,316,323,330,337,344,351,358]
var wrapper = d3
.select('#game svg')
.attr('width', window.innerWidth)
.attr('height', window.innerHeight)
.selectAll('g')
.data(dataset)
.enter()
.append('g')
.html(function(d) { return svgNode; })
.transition()
.duration(1500)
.attr('transform', function(d) {
return 'translate(500,300)' +
'rotate(' + d * 1.8 + ', 63, 54.77)';
});
(Ne yazık ki,. Ancak, sorun aynıdır burada v3 kullanıyor JSFiddle böylece, JSFiddle çalışan D3 v4 almak mümkün değildi).
Beklenmediğim davranış: Tüm tavuklar aynı merkez etrafında dönüyor, hiçbir zaman animasyonun sonunda görülen dairenin boyutlarını geçmiyor.
Gerçek sonuç: Tüm tavuklar, en sonunda doğru konuma dönmeden önce sol üst köşenin çevrilmiş orijinal konumu etrafında dönerler. Iş için beni vermedi
Çözümleri:
How to rotate an object around the center in d3.js
- Bu değil nesne tek bir nokta etrafında, daha uzakta sabit bir nokta etrafında dönen hakkındadır
- Bu çalışır, ancak tamamen
How do I rotate or scale (transform) an SVG path relative to its center point?
- ben keyfi bir noktadan başlamak çözüm gerek D3 ekosistemin dışında, her zaman değil kökenli @ beni alır olabilir (0,0)
Sonuç olarak:
Şu anda oldukça şaşkınım ve herhangi bir yardım büyük beğeni topluyor. Zaman ayırdığın için teşekkürler.
Sorununuzla ilgili değil, ancak JSfiddle içinde d3 4.x kullanmak için, HTML panelinde buna benzer şekilde başvurmanız yeterlidir: '" –