2013-06-19 16 views
9

Öyle sonra fare tekerleği ben tercüme ve daha sonra elemanın dönüşümü niteliğini belirlemek için kullanmak ölçek ile bir yakınlaştırma olayı alabilirsiniz kullanılır, benim SVG bir yakınlaştırma eklemeyi de d3.behavior kullanıyorum.D3js: d3.zoom olayı tarafından ayarlanan zum ölçeğini nasıl temizlerim?

zoom.scale değer bir yere kadar fare tekerleği her zaman tüm önceki yakınlaştırma olayların dikkate alarak, doğru zum değeri içeren kullanıldığı her zaman kalıcıdır görünüyor. Bu harika, ama bu değeri temizlemek için bir yol ihtiyacım var, sıfırlama zum butonu. Kullanıcı düğmeye bastığında, yakınlaştırmak için bir dahaki sefere kaydırırsa eleman tekrar orijinal boyutundan ölçeklenir.

Peki D3 mağaza bu değer ve nasıl sıfırlarım geliyor?

GÜNCELLEME: Bu soru da bunun bir başka yönü vardır
: Ben programlı bir ölçekleme dönüşümü yapmak için "dönüştürmek" özelliğini ayarlarsanız, yakınlaştırma olay dikkate olanlar sürmez. Bu yüzden daha sonra yakınlaştırmak için fare tekerleğini kullanırsam vidalanırım çünkü orijinal dönüşümü yıkabilirim. Bu nedenle, nerede olursak olalım, yakınlaştırma olayının "çevir" ve "ölçek" değerlerini programlamaktan kurtarmanın bir yoluna ihtiyacım var.

+1

Bu yorumu, d3 google grup forumunda benzer bir sorunla karşılaştırarak not edin: https://groups.google.com/d/msg/d3-js/-qUd_jcyGTw/ksHIZi7baCsJ – mg1075

cevap

12

zum ölçeği yakınlaştırma nesne saklanır. Sana benzeyen bir kod çizgi var tahmin ediyorum:

var zoom = d3.behavior.zoom() 

o nesneden ölçeğini alma basittir:

zoom.scale(zoom.scale()/2) 

yaptı:

zoom.scale() 

x2 uzaklaştırmak için zoom.translate() ve zoom.translate([x, y]) ile aynı şekilde çalışır ve ayarlanır.

ekran sadece bir tane güncelleme yaparken, diğer da güncellenir emin olun zoom ile senkronize dönüşümü tutmak için.

+2

https://github.com/ mbostock/d3/wiki/Yakın Çekim-Davranış –

+0

Bu harika! Bu nesneyi olay nesnesinden alabilmemin bir yolu var mı? Ya da bir tanıtıcıyı var olarak tanımlayıp açık tutmak zorunda mıyım? –

+0

Ah boşver, bunu çözdüm, bu d3.event.target nesnesi. Cevabınız için teşekkürler :) –