Tôi đã gặp khó khăn khi gói đầu xung quanh một số khái niệm D3 (nó không giúp tôi tương đối mới với javascript). Những gì tôi đang cố gắng làm là có một chỉ báo trạng thái bắt đầu màu xanh lá cây, từ từ chuyển sang màu vàng, và sau đó từ từ chuyển sang màu đỏ. Nếu một số sự kiện xảy ra (nút bấm, tin nhắn nhận được, bất cứ điều gì), tôi muốn các chỉ số để trở về màu xanh lá cây, khởi động lại quá trình chuyển đổi.Chuyển đổi màu trong d3 sử dụng thời gian trôi qua
Dưới đây là một ví dụ đơn giản (trong jQuery) cho thấy hiệu ứng hình ảnh cơ bản (không có khả năng để thiết lập lại) http://jsfiddle.net/N4APE/
Trong D3, ý tưởng của tôi là để lập bản đồ màu nền cho số mili giây trôi qua. Tôi đã cố gắng tạo thang tỷ lệ như sau:
//10 sec is yellow, 30 sec is red
d3.scale.linear().domain([0, 10000, 30000]).range(["#00ff00", "#ffff00", "#ff0000"]);
Nhưng bây giờ tôi đã mất một chút. Tôi đã chơi với sự kết hợp của quá trình chuyển đổi, tweens, và interpolators, nhưng tôi dường như không nhận được bất cứ nơi nào. Dưới đây là một số nỗ lực thảm hại để làm cho nó làm việc http://jsfiddle.net/Ebuwa/
vấn đề của tôi:
- Tôi không biết làm thế nào để kết hợp millis trôi qua của một chuyển đổi sang quy mô của tôi, và sau đó thiết lập màu nền
- My chuyển đổi dường như chạy khi tôi tạo nó, thay vì khi tôi gọi nó, và nó hoạt động trên yếu tố sai.
- Tôi không tích cực cách đặt lại quá trình chuyển đổi để giữ cho màu xanh lục khi tôi đã chinh phục được các sự cố khác của mình.
Một lưu ý khác, tôi có thể hạnh phúc khi sử dụng vòng tròn svg hoặc thứ gì đó tương tự, nhưng tôi đã may mắn khi thao tác thuộc tính điền svg vì tôi có thuộc tính nền html.
Cảm ơn bạn
Cảm ơn Adam! Một giải pháp khác cũng đến với tôi vào giữa đêm, sử dụng vảy đủ vui vẻ. http://jsfiddle.net/WBAuT/ Tôi chỉ sử dụng setInterval, và tôi thấy rằng sử dụng một khoảng thời gian tương đối lớn (như 1 giây), nhưng thêm một quá trình chuyển đổi hoạt động khá tốt. Một khoảng thời gian quá nhỏ dường như bog xuống một chút. – Denial