两条线的交点处有一个圆。如何确定鼠标是否在圆形,第1行,第2行或其他位置的顶部单击?
我使用过if-then-else阶梯来测试view.onClick函数中的object.hitTest。我先测试线条,然后再画圈。
当我在重叠线区域内的任意位置单击圆圈时,所有三个hitTest都返回HitResult。我该怎么做,所以当我单击圆圈上的任意位置时,只有圆圈hitTest会通过。
答案 0 :(得分:3)
我不确定这是否是您要尝试的方法,但是您可以通过致电project.hitTest()
立即对所有项目进行测试。
只有最上面的项目会匹配。
这里是sketch演示解决方案。
var myLine1 = new Path.Line({
from: [50, 50],
to: [150, 50],
strokeColor: 'black',
strokeWidth: 10,
name: 'myLine1'
});
var myLine2 = new Path.Line({
from: [150, 50],
to: [150, 100],
strokeColor: 'black',
strokeWidth: 10,
name: 'myLine2'
});
var myCircle = new Path.Circle({
center: [150, 50],
radius: 10,
strokeColor: 'red',
fillColor: 'red',
name: 'myCircle'
});
view.onClick = function(event) {
var hitTest = project.hitTest(event.point);
if (hitTest) {
alert('Clicked on item: ' + hitTest.item.name);
} else {
alert('Clicked elsewhere');
}
};