1

私はd3ドラッグを学んでいます、そして私はここでこの行で立ち往生しています d3.event.dx。この値をコンソールに出力すると、ポイントをドラッグするとint値が返されますが、この戻り値がどのパターンに従うかはわかりません。誰か説明してもらえますか?

vis.selectAll("circle.control")
    .data(function(d) { return points.slice(0, d) }) // array contains 2 3 ... 5 points respectively 
  .enter().append("circle")
    .attr("class", "control")
    .attr("r", 7)
    .attr("cx", x)
    .attr("cy", y)
    .call(d3.behavior.drag()
      .on("dragstart", function(d) {
        this.__origin__ = [d.x, d.y];
        //alert(this.__origin__);
      })
      .on("drag", function(d) {
        d.x = Math.min(w, Math.max(0, this.__origin__[0] += d3.event.dx));
        //alert(this.__origin__[0]);
        //alert(d3.event.dx);
        console.log(d3.event.dx);
       // console.log (d.x);

        d.y = Math.min(h, Math.max(0, this.__origin__[1] += d3.event.dy));

        //alert(this.__origin__[1]);
        bezier = {};
        update();
        vis.selectAll("circle.control")
          .attr("cx", x)
          .attr("cy", y);
      })
      .on("dragend", function() {
        delete this.__origin__;
      }));
4

2 に答える 2

1

イベント オブジェクトのdxメンバーは何らかの座標になりますが、おそらく意味のあるものではありません。d3.eventDOM イベントであるため、含まれる情報は、視覚化で行っていることを反映していない場合があります。

d3 が提供する他のメソッドを使用して、より意味のある情報を取得できます。たとえばd3.mouse()、コンテナに対する座標を取得できます。詳細については、ドキュメントを参照してください。

于 2013-03-19T09:58:34.427 に答える