我已经问了一些关于这个的问题,关于它的其他问题,但我几乎完成了!
我正在 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没有宽度和高度,所以也许这是其中的一部分?但我不确定如何重构它来解决这个问题。此外,它有点工作,所以我不确定如果高度和宽度只是空,为什么会出现这种情况?
我只是完全不理解这一点,还是我很接近?