0

私は kineticJS で最初のプロジェクトを行っています。キャンバス上でいくつかの図形をドラッグする必要があり、その間、リアルタイムで図形の座標をページのどこかに書き込む必要があります。これを行うには、次のようにレイヤーで「dragmove」イベントを使用します。

layer.on("dragmove",function(evt) {//detect shape and write stuff});

クリックされた形状をキャッチするために「targetNode」を使用しました。問題は次のとおりです。グループの一部ではない形状で targetNode を使用すると、すべてが機能しますが、移動する必要があるノードがグループの一部である場合、targetNode は初回のみ機能し、未定義の値を返します。以降のすべての時間 (dragstart や click とは異なり、dragmove には通常時間がかかります)。

私が話していることがわかるように、フィドルを作成しました。

http://jsfiddle.net/UScmU/

2つの四角形がグループになっています。形状をクリックすると、アラートがその名前を返します。円または四角形をドラッグすると、コンソールに形状の名前が書き込まれます。

助けていただければ幸いです。英語で申し訳ありませんが、テキストが理解できることを願っています。

4

1 に答える 1

0

何らかの理由evt.targetNodeで、最初の呼び出しでのみ定義され、dragmoveその後未定義になります。これを行うことでこれを確認できます。

layer.on("dragmove",function(evt) {
  console.log(evt.targetNode);
  console.log(evt.targetNode.getName()+"");
});

var nodo代わりに、イベント関数の外側で定義を使用してみてから、 nodo = evt.targetNodeonに設定してmousedownください。

var nodo;
layer.on('mousedown', function(evt) {
    nodo = evt.targetNode;
});
layer.on("click", function (evt) {
    console.log(nodo.getName() + "");
});
layer.on("dragmove", function (evt) {
    console.log(nodo.getName() + "");
});

JSFIDDLE

于 2013-09-13T17:49:36.187 に答える