我有一个Fabric.js画布,上面有一组形状(一个“标记”)和一个矩形,我将把标记拖到(“平台”)上。将令牌拖到平台上会发生各种各样的事情。
当我致电token.intersectsWithObject(platform)
时,一切都很顺利。但是我将有几个平台来拖动标记,我想提高拖放交互的精度,所以我决定在检查碰撞时,我只想考虑基础的令牌,而不是整件事。
这不应该太困难,因为令牌的基础是一个形状。我所要做的就是在token.base
中存储对该形状的引用,然后调用token.base.intersectsWithObject(platform)
。
但由于某种原因,这不起作用。 token.base.intersectsWithObject()
存在,但它始终返回false
。我无法弄清楚为什么。有人可以帮忙吗?这是一个CodePen;翻转JavaScript顶部的开关,切换token
和token.base
之间的相关逻辑。
答案 0 :(得分:1)
对象base
在群组中。它的坐标不会改变,因为它在组中。如果执行某些控制台日志记录,您将看到组的坐标确实发生更改,而组内对象的坐标不会更改。因此理论上base
对象与platform
console.log('Left margin of group =', fred.getLeft());
console.log('Top margin of group =', fred.getTop());
console.log('Left margin of base =', fred.base.getLeft());
console.log('Top margin of base =', fred.base.getTop());