2016-06-28 4 views
0

У меня две формы на моем холсте с помощью CreateJS. В каждой форме я включил область хитов с собственной фигурой с прослушивателем мыши. Две формы одна над другой. Когда я нажимаю на фигуру, я получил два обратных вызова. Можно получить только обратный вызов видимых фигур?CreateJS ударил только видимые элементы

enter image description here

ответ

0

Подобно DOM, взаимодействие способа мыши работает, чтобы пузыриться список отображения, который исключает элементы, которые не являются частью цепи иерархической цели события.

Это означает, что братья и сестры или элементы других отображаемых списков, которые находятся внизу, не получат обработчики событий (это то, что вы описали), и вы не получите событий мыши для элементов, которые не являются объектом события мыши.

Однако вы можете легко подключить свое собственное взаимодействие с помощью getObjectsUnderPoint, в котором рассказывается, что находится под мышкой.

stage.on("click", handleClick); 
function handleClick(event) { 
    var list = stage.getObjectsUnderPoint(event.localX, event.localY); 
    for (var i=0, l=list.length; i<l; i++) { 
    console.log(list[i]); 
    } 
} 

Вот краткий пример: http://jsfiddle.net/y8jhb26x/

Обратите внимание, что вы можете добавить событие мыши в любой контейнер вы хотите ограничить, какие объекты будут вызывать эту проверку (я использовал только этап), но при вызове getObjectsUnderPoint, он вернет что-нибудь под мышкой. Если вы хотите проверить только элементы в этом контейнере, вы можете использовать метод contains для фильтрации нежелательных детей:

for (var i=0, l=list.length; i<l; i++) { 
    if (someContainer.contains(list[i])) { 
    console.log(list[i]); 
    } 
} 

Вы можете также использовать аргументы getObjectsUnderPoint, чтобы отфильтровать элементы с обработчиками мыши, или уважать mouseChildren/mouseEnabled недвижимости , как работает фактическое взаимодействие с мышью.

Надежда, что помогает!

+0

Он отлично работает для меня! Спасибо – RafelSanso

Смежные вопросы