0

ポイントをドラッグすると、最適な線を更新するd3を使用して、最適な線のアプリを作成しています。ドラッグが終了すると、ラインが自動的に更新されるように機能しました。しかし、ポイントがドラッグされているときに実際に更新することになると、そうすることができません。

ここに私のドラッグ機能があります:

 var move =  d3.behavior.drag()
                .on("drag",drag)
                .on("dragend",function(){
                    dict.length = 0;
                    var dragPoint = d3.select(this);
                    var newX = x_scale2(parseInt(dragPoint.attr("cx")));
                    var newY = y_scale2(parseInt(dragPoint.attr("cy")));

                    model.replace_point(dragPoint.attr("id"),newX,newY);
                    updateDisplay();


            });

  function drag(){
      var dragPoint = d3.select(this);
      dragPoint
    .attr("cx",function(){return d3.event.dx + parseInt(dragPoint.attr("cx"));})
    .attr("cy",function(){return d3.event.dy +parseInt(dragPoint.attr("cy"));})
        }

**私の目標を達成する方法についての助けをいただければ幸いです**

4

1 に答える 1

1

ドラッグ機能に「更新コード」を含めることができます。
この行は、ドラッグ イベントが発生するたびに更新されます。つまり、ポイントの位置が変わるたびに。

var move = d3.behavior.drag()
    .on("drag", drag);

function drag() {
    var dragPoint = d3.select(this);
    dragPoint
        .attr("cx", d3.event.dx + parseInt(dragPoint.attr("cx")))
        .attr("cy", d3.event.dy + parseInt(dragPoint.attr("cy")));
    var newX = x_scale2(parseInt(dragPoint.attr("cx")));
    var newY = y_scale2(parseInt(dragPoint.attr("cy")));
    model.replace_point(dragPoint.attr("id"), newX, newY);
    updateDisplay();
}
于 2013-07-22T04:51:51.540 に答える