2013-05-27 8 views
32

में मैं सिर्फ निम्नलिखित कोड का उपयोग करके डी 3 का उपयोग कर माउस स्थिति प्राप्त करना चाहता था:माउस स्थिति डी 3

var x = 0; 

svg.on('mousemove', function() { 
    x = d3.mouse(this)[0];   
}); 

लेकिन क्या मैं हमेशा x = 0 प्राप्त !. console.log() का उपयोग करके, मैं देख सकता हूं कि x मूल्य function() के अंदर बदल रहा है लेकिन इसमें से x को इसकी आरंभिक मूल्य = 0 मिली है।

मैं x मूल्य कैसे सहेज सकता हूं और बाद में अपने आवेदन में इसका उपयोग कर सकता हूं?

+1

आप jsfiddle में टुकड़ा दिखा सकते हैं? – Jashwant

+4

मुझे इस बात का नुकसान हुआ है कि चिह्नित उत्तर इस मुद्दे को कैसे हल करता है। क्या आप कृपया एक कोड स्निपेट को स्पष्ट करने के लिए पोस्ट कर सकते हैं? –

+2

वे ऊपर की तरह ही काम कर रहे हैं ('d3.mouse (यह) [0]') लेकिन इसे 'समन्वय' नामक सरणी में संग्रहीत करना। दूसरे शब्दों में, 'निर्देशांक = [x, y] = d3.mouse (यह) '। क्या उससे मदद हुई? – podcastfan88

उत्तर

59

आपको एक सरणी का उपयोग करना होगा। यही कारण है कि x और तरह y स्टोर करेगा:

var coordinates = [0, 0]; 
coordinates = d3.mouse(this); 
var x = coordinates[0]; 
var y = coordinates[1]; 

// D3 v4 
var x = d3.event.pageX - document.getElementById(<id-of-your-svg>).getBoundingClientRect().x + 10 
var y = d3.event.pageY - document.getElementById(<id-of-your-svg>).getBoundingClientRect().y + 10 
12

आप क्लिक करें और खींचें समारोह इस उदाहरण के माध्यम से समझ सकते हैं बहुत well.Hope यह मदद करता होगा ..

var point = d3.mouse(this) 
    , p = {x: point[0], y: point[1] }; 

http://jsfiddle.net/mdml/da37B/

+0

स्क्रिप्ट में सिंटेक्स त्रुटि। नवीनतम फ़ायरफ़ॉक्स, पहेली भी शुरू नहीं होता है। – peterh

1

मैं आपको संदेह कुछ ऐसा करने की कोशिश कर रहे हैं:

var x = 0; 

svg.on('mousemove', function() { 
    x = d3.mouse(this)[0];   
}); 

console.log(x); 

जब तक आपके पास सुपर फास्ट हैं, तो यह हमेशा कंसोल पर "0" लिखता है क्योंकि जब आप माउस तक पहुंचते हैं तो पूरी स्क्रिप्ट निष्पादित होती है। अपने स्निपेट को सीधे कंसोल में डालने का प्रयास करें, माउस को चारों ओर ले जाएं और फिर कंसोल में "x" टाइप करें। आपको नवीनतम एक्स मान देखना चाहिए।

मुझे आशा है कि इससे मदद मिलेगी, लेकिन मैंने इस सवाल को गलत समझा होगा।

2

वी 3:

var svg = d3.select('body').append('svg') 
    .attr('width', width) 
    .attr('height', height) 
    .on('mousemove', function() { 
     console.log(d3.mouse(this)) // log the mouse x,y position 
    }); 

वी 4:

var svg = d3.select('body').append('svg') 
    .attr('width', width) 
    .attr('height', height) 
    .on('mousemove', function() { 
     console.log(d3.event.clientX, d3.event.clientY) // log the mouse x,y position 
    }); 
संबंधित मुद्दे