में ड्रैग व्यवहार के लिए उत्पत्ति (drag.origin) को कैसे सेट करें I d3 फ्रेमवर्क का उपयोग करके HTML-text और पृष्ठभूमि-आयत से समूह के लिए ड्रैग व्यवहार को लागू करने का प्रयास कर रहा हूं। मैं इसे काम करने में सक्षम था, हालांकि drag.origin को सेट नहीं करते समय मैं माउस-स्थिति/तत्व-निर्देशांक ऑफसेट के कारण ध्यान देने योग्य कूद देख सकता हूं। वास्तव में d3 wiki-page पर वर्णित कैसे किया गया है, हालांकि पृष्ठ ने वर्णन किया है कि उत्पत्ति को खींचने के लिए कैसे सेट किया जाए, मैं ठीक से समझ नहीं पा रहा हूं कि मेरे उदाहरण में इसे कैसे लागू किया जाए। मैंने दो अलग-अलग दृष्टिकोणों की कोशिश की: तत्वों को एक साथ समूहबद्ध करने और नए तत्व धारण करने वाले तत्व को परिभाषित करने के लिए तत्व का उपयोग करना। पहले मामले में मुझे अनुवाद-फ़ंक्शन का उपयोग करना होगा और मुझे यह भी नहीं पता कि समूह के निर्देशांक कैसे प्राप्त करें।डी 3 जावास्क्रिप्ट लाइब्रेरी
var svg = d3.select("body").append("svg")
.attr("width", 960)
.attr("height", 500);
var group = svg.append("svg:g")
.attr("transform", "translate(10, 10)")
.attr("id", "group");
var rect1 = group.append("svg:rect")
.attr("rx", 6)
.attr("ry", 6)
.attr("x", 5/2)
.attr("y", 5/2)
.attr("id", "rect")
.attr("width", 250)
.attr("height", 125)
.style("fill", 'white')
.style("stroke", d3.scale.category20c())
.style('stroke-width', 5);
var html1 = group.append("foreignObject")
.attr("x", 50)
.attr("y", 25)
.attr("width", 200)
.attr("height", 100)
.attr("id", "fobject")
.style("border-color", d3.scale.category20c())
.append("xhtml:div")
.style("font", "14px 'Helvetica Neue'")
.html("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu enim quam.");
var innerSvg = svg.append("svg")
.attr("x", 500)
.attr("y", 10)
.attr("id", "innerSvg");
var rect2 = innerSvg.append("svg:rect")
.attr("rx", 6)
.attr("ry", 6)
.attr("x", 5/2)
.attr("y", 5/2)
.attr("id", "rect")
.attr("width", 250)
.attr("height", 125)
.style("fill", 'white')
.style("stroke", d3.scale.category20c())
.style('stroke-width', 5);
var html2 = innerSvg.append("foreignObject")
.attr("x", 50)
.attr("y", 25)
.attr("width", 200)
.attr("height", 100)
.attr("id", "fobject")
.style("border-color", d3.scale.category20c())
.append("xhtml:div")
.style("font", "14px 'Helvetica Neue'")
.html("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu enim quam.");
var drag1 = d3.behavior.drag()
.on("drag", function(d,i) {
d3.select(this).attr("transform", function(d,i){
return "translate(" + [ d3.event.x,d3.event.y ] + ")"
})
});
var drag2 = d3.behavior.drag()
.on("drag", function(d,i) {
d3.select(this)
.attr("x", d3.event.x)
.attr("y", d3.event.y);
});
group.call(drag1);
innerSvg.call(drag2);
मैं बहुत किसी भी स्पष्टीकरण की सराहना करेंगे, स्वाभाविक रूप से मैं एक काम उदाहरण यहां तैयार: http://jsfiddle.net/Y8y7V/
आप अपने विवरण के लिए बहुत बहुत धन्यवाद । पहले मामले में मैं बस तत्व के पैरामीटर के रूप में एक्स/वाई निर्देशांक जोड़ सकता हूं। मुझे आश्चर्य है कि मैं परिभाषित एक्स/वाई पैरामीटर के अनुसार अनुवाद पैरामीटर कैसे सेट कर सकता हूं, जैसे: var group = svg.append ("svg: g") .attr ("x", 50) .attr ("y" , 25) .attr ("ट्रांसफॉर्म", "अनुवाद (" + [this.attr ("x"), this.attr ("y")] + ")") ocourse का यह काम नहीं करेगा, क्योंकि यह संदर्भ खिड़की वस्तु। –
karlitos
यदि आप 'मूल()' उचित रूप से सेट करते हैं, तो आपको स्थिर निर्देशांक के आधार पर परिवर्तन सेट करने की आवश्यकता नहीं है। –
जो मेरी समस्या का समाधान नहीं करता है - प्रश्न जिसके लिए मैं अभी तक जवाब नहीं ढूंढ पाया - समूह की स्थिति कैसे प्राप्त करें, -element, जब मैं केवल अपनी स्थिति निर्धारित करने के लिए "परिवर्तन" का उपयोग कर सकता हूं। किसी भी तरह धन्यवाद, आपके पिछले स्पष्टीकरण ने मेरी समस्या हल की और मैं बूथ मामलों के लिए एक समाधान समाधान खोजने में सक्षम था। –
karlitos