0

これに関する他の問題について、すでにいくつか質問しましたが、ほぼ完了しました。

私は Animate CC でドラッグ アンド ドロップ インタラクションに取り組んでいますが、ほとんど機能しています。ドラッグアンドドロップで認識しますが、ターゲット領域の位置がずれているようです。デモ

私の推測では、私のやり方が正しくないことと関係があると思いますが、globalToLocal()よくわかりません。これまでのところ、w1w2h1の値をh2変更しても何も変わっていません。

これが交差テスト機能です。ここに基づいた非常に人気のある機能です

function intersect(obj1, obj2){
  var objBounds1 = obj1.nominalBounds.clone(); //used nominalBounds for shape in animateCC
  var objBounds2 = obj2.nominalBounds.clone();

  var pt = obj1.globalToLocal(objBounds2.x, objBounds2.y); //is this what's wrong?

  var h1 = -(objBounds1.height / 2 + objBounds2.height);
  var h2 = objBounds2.height / 2;
  var w1 = -(objBounds1.width / 2 + objBounds2.width);
  var w2 = objBounds2.width / 2;

  if(pt.x > w2 || pt.x < w1){
    spliceThis(hitTestArray, obj2);
    return false;
  } 
  if(pt.y > h2 || pt.y < h1){
    spliceThis(hitTestArray, obj2);
    return false;
  } 
    if(hitTestArray.indexOf(obj2) < 0){ //Obj2 not found
    hitTestArray.push(obj2);
  }
  return true;
}

obj1はドラッグ オブジェクト、obj2はドロップ ターゲットです。私はイーゼルJSに幅と高さがないことを知っているので、それはその一部でしょうか? しかし、それを説明するためにどのようにリファクタリングするかはわかりません。また、多少機能しているので、高さと幅がnullの場合になぜそうなるのかわかりませんか?

私はこれを完全に理解していないだけですか、それとも私は近いですか?

4

1 に答える 1

0

技術的には、問題の原因を突き止めましたが、その理由はわかりません。

ここに画像の説明を入力

何が起こっているかは、両方の境界の x と y でありobj1obj2ステージ上で負の値に設定されています。理由はまだわかりませんが、少なくとも今何が問題なのかはわかります... 他の誰かが詳しく説明してくれるでしょうか? JavaScript と EaselJS はまだ初心者です。

アップデート:

var pt = obj1.globalToLocal(obj2.x, obj2.y);負の境界を使用していたため、行を修正しobj2ましたが、x と y では問題ありませんでした。次に、レジストリ ポイントを左上隅に変更しました。これは、その部分が適切であったためですが、それでも空白領域にはみ出していました。

意図したとおりに機能していますが、なぜ負の値を返すのかはまだわかりません。

于 2016-04-22T22:45:15.120 に答える