Поиск объекта, по которому щелкают в наборе перекрывающихся объектов - PullRequest
0 голосов
/ 12 февраля 2019

На пересечении двух линий есть круг.Как я могу выяснить, если щелкнуть мышью сверху круга, строки 1, строки 2 или где-то еще?

Я использовал лестницу if-then-else для проверки object.hitTest в функции view.onClick,Сначала я тестирую линии, а затем кружок.

ссылка для эскиза

Когда я щелкаю по кружку в любом месте в области перекрытия с линиями, тогда все три hitTest возвращают HitResult.Что я могу сделать, чтобы, когда я щелкнул где-нибудь на круге, проходил только хит-тест по кругу.

1 Ответ

0 голосов
/ 12 февраля 2019

Я не уверен, что это то, что вы пытаетесь сделать, но вы можете проверить все элементы сразу, позвонив по номеру project.hitTest().
. Только самый верхний элемент будет соответствовать.

Здесь эскиз , демонстрирующий решение.

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');
    }
};
...