私はD3で初心者です。マウスでドラッグしようとしていますが、実際にはいくつかの問題が発生します。このエラーを取得し、それを呼び出すようにする前に、私はVaRのドラッグを定義する場合未定義のプロパティ 'ドラッグ'を読み取ることができませんD3
:私はそれを呼び出した後のvarドラッグを定義する場合、未定義
のプロパティ「ドラッグ」を読み取ることができません、私は別のエラーを取得:プロパティを読み取ることができません。「適用」 undefinedの しかし、実際には、stackoverflowで私はこのproblを解決するために私はそれを呼び出す前にvarドラッグを定義する必要があり、私はループ上で検索することをお読みください。
以下、私のコードを見ることができます。前もって感謝します。
$(document).ready(function() {
var width = 500;
var height = 500;
var fullAngle = 2 * Math.PI;
var arc2 = d3.arc()
.innerRadius(195)
.outerRadius(200)
.startAngle(0.18)
.endAngle(fullAngle/1.02);
var svgContainer = d3.select("#container")
.append("svg")
.attr("width", width)
.attr("height", height)
.style("border", "1px solid");
var group1 = svgContainer.append("g");
var group2 = svgContainer.append("g");
group2.append("path")
.attr("d", arc2())
.attr("fill", "blue")
group1.attr("transform", "translate(" + 200 + "," + 200 + ")");
group2.attr("transform", "translate(" + 250 + "," + 250 + ")");
var rectangle = svgContainer.append("rect")
.attr("x", 150)
.attr("y", 50)
.attr("width", 30)
.attr('class', 'rectangle')
.attr("height", 70)
.call(drag)
var drag = d3.behavior.drag().on('drag', function() {
var obj = svgContainer.append("rect")
dragMove(this, obj, 'rect')
});
});
function setPoints(obj, prop) {
obj[prop] = []
var k = 0
d3.selectAll('.rect')
.each(function() {
var c = d3.select(this)
var cX = d3.transform(c.attr('transform')).translate[0]
var cY = d3.transform(c.attr('transform')).translate[1]
obj[prop].push({
x: cX,
y: cY,
index: k++
})
})
}
function dragMove(rectangle, obj, prop) {
var x = d3.event.x
var y = d3.event.y
setPoints(obj, prop)
d3.select(rectangle).attr('transform', 'translate(' + x + ',' + y + ')')
$scope.$apply()
}
私は自分のコードを整理して、ドラッグが機能しています。私はスニペットに矩形(setPointsとdragMove)をドラッグする関数を追加しましたが、実際には四角形をクリックすると右に正しく移動します –
@PierpaoloErcoliどのようなyopurの出力が期待していますか助けることができる –
@ PierpaoloErcoliあなたがドラッグパスに従っているのであれば、ここをhttps://jsfiddle.net/n4m1r8nb/208/ –