2016-02-05 36 views
1

我在形狀層的頂部有一個透明的拖動層。非常適合使互動截然不同,因此我可以切換拖動操作(在滾動視圖或編輯形狀位置之間)。但是,除非關閉拖動模式(通過隱藏介入的透明Rect),否則其他鼠標懸停事件都不會在其下面的形狀圖層上觸發。我需要將非拖動的鼠標事件傳播到它下面的圖層。有很多鼠標懸停事件的形狀。Konva在層之間傳播事件

有沒有一種簡單的方法來將鼠標懸停在事件下方的層上,還是需要編寫自定義處理程序來爲每個形狀觸發事件?

+0

我也嘗試將所有內容放在同一圖層中,並將事件從圖層偵聽器觸發到形狀上,但沒有運氣。 –

回答

1

我設法解決這個問題,而不必在圖層之間傳播事件。只有在沒有單擊形狀的情況下,我纔會在形狀圖層上的形狀後面放置可拖動的表面。然後,爲了覆蓋單擊形狀,在形狀dragstart事件上,如果設置了layerdraggable標誌,則在形狀上執行stopDrag()和在圖層上執行startDrag()。這使我可以切換一個簡單的標誌,無論我想要整個圖層拖動還是僅僅是形狀。

我不得不清理dragend事件中的一些形狀位置,但也可以通過形狀上的拖拽來完成。

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