globalToLocal 的行为不符合我的预期? (很确定我只是不明白)

globalToLocal not behaving as I expected? (pretty sure I'm just not getting it)

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

我正在 Animate CC 中进行拖放交互,我几乎已经开始工作了。它可以识别拖放,但目标区域的位置似乎不正确。 Demo

我猜这与我没有正确地 globalToLocal() 有关,但我不确定。到目前为止,修改我的 w1w2h1h2 中的值没有任何改变。

这是相交测试功能,它是一个非常流行的基于 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 没有宽度和高度,所以也许这是它的一部分?但我不确定我将如何重构它来解决这个问题。此外,它有点工作,所以我不确定如果高度和宽度只是空值,为什么会这样?

我是完全不理解这个,还是我接近了?

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

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

更新:

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

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