globalToLocal不按我的预期行事? (很确定我只是没有得到它)

时间:2016-04-22 17:33:25

标签: javascript drag-and-drop easeljs animate-cc

我已经就此问了几个问题,关于它的其他问题,但我差不多完成了!

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

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

1 个答案:

答案 0 :(得分:0)

从技术上讲,我发现了造成这个问题的原因,但我不知道为什么。

enter image description here

正在进行的是obj1obj2上的边界的x和y在舞台上被设置为负值。我不知道为什么,但是嘿,至少我知道现在的错误......也许其他人可以详细说明?我还是JavaScript和EaselJS的新手。

<强>更新

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

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