0

我已经问了一些关于这个的问题,关于它的其他问题,但我几乎完成了!

我正在 Animate CC 中进行拖放交互,我几乎可以让它工作。它可以在拖放时识别,但目标区域上的位置似乎不正确。演示

我的猜测是这与我做得不对有关globalToLocal(),但我不确定。到目前为止,修改 my w1, w2,h1中的值h2并没有改变任何事情。

这是相交测试功能,它是一个非常流行的基于here的功能

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是放置目标。我知道easelJS没有宽度和高度,所以也许这是其中的一部分?但我不确定如何重构它来解决这个问题。此外,它有点工作,所以我不确定如果高度和宽度只是空,为什么会出现这种情况?

我只是完全不理解这一点,还是我很接近?

4

1 回答 1

0

从技术上讲,我找到了导致问题的原因,但我不知道为什么。

在此处输入图像描述

发生的事情是 x 和 y 两者的界限,obj1并且obj2在舞台上被设置为负值。我还不知道为什么,但是嘿,至少我现在知道出了什么问题……也许其他人可以详细说明?我还是 JavaScript 和 EaselJS 的新手。

更新:

修复了这条线var pt = obj1.globalToLocal(obj2.x, obj2.y);,因为它使用的是负边界,但obj2在 x 和 y 上很好。然后将注册表点更改为左上角,因为这部分很好,但仍然进入空白区域。

它现在按预期工作,但我仍然不知道为什么它返回负值。

于 2016-04-22T22:45:15.120 回答