2013-06-19 27 views
9

Tôi đang sử dụng d3.behavior để đính kèm một sự kiện thu phóng vào SVG của tôi, vì vậy khi đó bánh xe chuột được sử dụng tôi có thể có được sự kiện zoom với dịch và tỷ lệ mà tôi sử dụng để đặt thuộc tính biến đổi của phần tử.D3js: Làm cách nào để xóa quy mô thu phóng được đặt bởi sự kiện d3.zoom?

Dường như giá trị zoom.scale vẫn tồn tại ở đâu đó nên mỗi lần sử dụng bánh xe chuột, nó luôn chứa giá trị zoom chính xác, có tính đến tất cả các sự kiện zoom trước đó. Điều này thật thú vị nhưng tôi cần một cách để xóa giá trị đó, hãy nói nút thu phóng đã đặt lại. Khi người dùng nhấp vào nút này, lần sau anh cuộn để thu phóng phần tử sẽ được thu nhỏ lại từ kích thước ban đầu của nó.

Vậy D3 lưu trữ giá trị này ở đâu và làm cách nào để đặt lại giá trị này?

UPDATE:
Câu hỏi này cũng có một khía cạnh khác trong đó: nếu tôi lập trình thiết lập các "cải tạo" thuộc tính để làm một biến đổi tỉ lệ, sự kiện zoom sẽ không mất những vào tài khoản. Vì vậy, nếu sau này tôi sử dụng bánh xe chuột để phóng to Tôi là vít vì tôi có thể trashing sự biến đổi ban đầu. Vì vậy, tôi cần một cách để lập trình, không chỉ đặt lại, giá trị "dịch" và "tỷ lệ" của sự kiện thu phóng, bất cứ nơi nào nó lưu trữ chúng.

+1

Lưu ý nhận xét này của một người nào đó có vấn đề tương tự trên diễn đàn nhóm d3 google: https://groups.google.com/d/msg/d3-js/-qUd_jcyGTw/ksHIZi7baCsJ – mg1075

Trả lời

12

Tỷ lệ thu phóng được lưu trữ trong đối tượng thu phóng của bạn. Tôi đoán bạn có một dòng mã mà trông giống như:

var zoom = d3.behavior.zoom() 

Bắt quy mô từ đối tượng đó là đơn giản:

zoom.scale() 

Để thu nhỏ x2:

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

dịch hoạt động theo cùng một cách, với zoom.translate()zoom.translate([x, y]) để nhận và đặt.

Để giữ cho chuyển đổi hiển thị đồng bộ với thu phóng, chỉ cần đảm bảo rằng khi bạn cập nhật, cái kia cũng được cập nhật.

+2

https://github.com/ mbostock/d3/wiki/Zoom-Behavior –

+0

Điều này thật tuyệt vời! Có cách nào mà tôi có thể lấy đối tượng này từ đối tượng sự kiện không? Hoặc tôi có phải xác định rõ ràng và giữ một xử lý của nó như var? –

+0

Ah không bao giờ nhớ, tôi đã tìm ra điều này, nó là đối tượng d3.event.target. Cảm ơn câu trả lời của bạn :) –

Các vấn đề liên quan