1

グラフィカル エディターの実装に KineticJS を使用しています。KineticJS グループをドラッグして、別の形状にドロップしたいと考えています。これまでのところ、「dropend」イベントをグループ内のハンドラーにバインドすることができました。しかし、ドロップに適した形状であることの証拠を与えるために、ドラッグ中にホバリングしている間に潜在的な目的の形状に色を変更したいと思います。私はそれを行う方法を見ることができず、キネティックのドキュメントで助けを見つけることができませんでした. どうすればいいですか?

ありがとう、エカ

4

2 に答える 2

0

あなたがしたことは実際に働いていますが、私はそれが非常に遅いと思います。私がしたことは、kineticjs(v4.0.1)の行3142を置き換えることでした:

else if(this.targetShape && !go.drag.moving)

else if (this.targetShape)

そしてそれは魅力のように機能します。およびイベントが発生しますmouseout。 とにかく、理由はわかりませんが、潜在的なターゲットを指すステージオブジェクトのプロパティ(shaperaggingなど)がありましたが、削除されました。mouseover

于 2012-09-05T22:51:24.400 に答える
0

つぶやいた後、解決策を見つけたと思います:

  var aShape = new Kinetic.Shape(...);
  :
  aShape.on("dragmove", function(evt) {

    // Detect shapes under mouse position
    var pos = aShape.getStage().getUserPosition(evt);
    var collidingShapes = aShape.getStage().getIntersections(pos);
    :
    // If needed, filter out colliding shapes not suitable for drop
    :
    // Highlight drop target candidates, e.g. simulating a "mouseover"
    for (var iTarget = 0; iTarget < collidingShapes.length; ++iTarget)
        collidingShapes[iTarget].simulate("mouseover");

    // If you need to remove highlighting, keep track of previously
    // highlighted shapes and call simulate("mouseout") on those
    // not currently in the candidates set.
  });
于 2012-07-04T14:25:07.380 に答える