2017-03-02 13 views
0

チェスの駒にドラッグ動作を設定することができない問題解決==使用d3.drag()()とD3-drag.v1.min.jsをD3js:代わりd3.behaviour.dragの

を使用してI D3jsを使ってSVGチェスボードを設定し、for行を使って各行と各列を調べます。私はチェスの断片のためにユニコードを使用したので、各チェスの断片はsvg要素です。

私はD3jsのドラッグ動作でチェスをドラッグしようとしていますが、不可能です。

すべてのチェスピースは、「ドラッグ可能」というクラスを持っています。だから私は、ドラッグを作成し、クラスですべての要素に

var drag = d3.behavior.drag() 
    .origin(function() { 
     var t = d3.select(this); 
     return {x: t.attr("x"), y: t.attr("y")}; 
    }) 
    .on("dragstart", function() { 
     d3.event.sourceEvent.stopPropagation(); // silence other listeners 
    }) 
    .on("drag", function(d,i) { 
     d3.select(this) 
     .attr("x", d3.event.x) 
     .attr("y", d3.event.y); 
    }); 

d3.selectAll(".draggable").call(drag); 

私の完全なコードは、ここでまた、私は他にあるとSVG要素と同じドラッグ機能を使用しようとしましたhttp://codepen.io/linhnt1516/pen/ZeGoNj?editors=0011

ある「ドラッグ」、それを添付しました例。このコードペンhttp://codepen.io/linhnt1516/pen/VpvobE?editors=0011をチェックし、テキストとボックスをドラッグします。

私はD3jsの数多くのドラッグ例を見てきましたが、どれもチェスのピースケースでは動作しません。

ここで問題が起こる可能性のある解決策やアイデアは誰でもあります。

+1

ドラッグしています。正確な問題は何ですか? –

+0

@GerardoFurtadoねえ、おねえていただきありがとうございます。私は問題を理解した。コードが更新されます。ドラッグの振る舞いは今は大丈夫です。 Btw、今私は新しい場所にピースが四角形の上にあるときにそのピースを移動したい、四角形が新しい強調表示されたボーダーを得る。そのため、各四角は、ピースがその上に移動したときにトリガーされるイベントを持ちます。なにか提案を??ありがとうございました。 –

+0

別の問題がある場合は、別の質問を投稿してください。誰もがコメントを読んでいるわけではありません。 –

答えて

0

私はD3 V3を使用して

var drag = d3.behaviour.drag() 
を設定する前に、私は完全にD3のV4とD3 V3のドラッグ動作または何behaviour.dragとの実際の問題は(ある)

の違いを理解していません

これは質問に記載されているようには機能しません。

しかし、私はこれを追加ときにD3-drag.v1.min.js

<script src="https://d3js.org/d3.v4.min.js" charset="utf-8"></script> 

ある支持D3スクリプトを発見し、ドラッグの

var drag = d3.drag() 

詳細なコードを設定します上記と同じですが、異なる初期化構文です。ドラッグ機能が正しく機能するようになりました。もし誰かが.behaviour.drag()がうまくいかず、私の古いコードと新しいコードとの実際の違いが何であるか知っていたら、私に教えてください。

関連する問題