2016-02-05 9 views
1

У меня есть прозрачный слой сопротивления поверх слоя фигуры. Работает отлично, чтобы сделать взаимодействие отличным, чтобы я мог переключать то, что перетаскивает (между прокруткой представления или редактированием позиций фигуры). Однако, если я не отключу режим перетаскивания (скрывая промежуточный прозрачный Rect), ни одно из других событий mouseover не загорается на слое формы под ним. Мне нужно распространять события перетаскивания мыши на слой ниже. Есть много фигур с мышью над событиями.Konva Продвигайте события между слоями

Есть ли простой способ распространять мышь на события на слой под ним или мне нужно написать специальный обработчик для запуска событий для каждой фигуры?

+0

Я также попытался поместить все в один слой и активировать события от слушателей уровня на фигуры, но не повезло. –

ответ

1

Мне удалось решить эту проблему без необходимости распространять события между слоями. Я помещаю перетаскиваемую поверхность за фигуры на слой формы только в том случае, если фигура не нажимается. Затем, чтобы закрыть, если щелкнуть фигуру, на событии dragstart формы, если установлен флаг layerdraggable, я делаю stopDrag() на фигуре и startDrag() на слое. Это позволило мне переключиться с помощью простого флага, хочу ли я перетаскивать весь слой или просто форму.

Мне пришлось немного почистить позицию фигуры на событии dragend, но вы можете сделать это с помощью dragbounds на фигуре.

shape.on('dragstart', function() { 
    if (layerDraggable) { 
     shape.stopDrag(); 
     shapeLayer.startDrag(); 
    } 
}