создать обработчик событий для контекстного меню для определенного элемента на холсте с помощью paperjs

Я создал холст с некоторыми элементами path, используя paperjs. для каждого элемента я хотел бы реализовать обработчик событий для contextmenu. paperjs поддерживает события мыши, но не поддерживает onContextMenu.

вот как я могу добавить обработчик событий onClick:

function addOnClick(clickArea) {
  //clickArea is path object
  clickArea.onClick = (e) => {console.log("my on click handler!"}
}

как я могу добавить onContextMenu ?


person Kfir    schedule 03.05.2020    source источник


Ответы (1)


Действительно, это не встроенная функция Paper.js, но вы можете обойти это, воспользовавшись недокументированным свойством MouseEvent.event. На самом деле это исходное событие, перехваченное Paper.js, поэтому вы можете использовать его, чтобы определить, какая кнопка мыши была нажата, и соответствующим образом адаптировать свою логику.
Вот sketch demonstrating the workaround.

const circle = new Path.Circle({
    center: view.center,
    radius: 50,
    fillColor: 'orange'
});

circle.onClick = (event) => {
    if (event.event.button > 0) {
        onRightButtonClick();
    } else {
        onLeftButtonClick();
    }
};

function onLeftButtonClick() {
    console.log('left button clicked');
}

function onRightButtonClick() {
    console.log('right button clicked');
}
person sasensi    schedule 03.05.2020
comment
Спасибо за ваш комментарий. Моя проблема в том, что мне нужно щелкнуть правой кнопкой мыши 2 раза, чтобы вызвать мою функцию. Кроме того, я все еще получаю контекстное меню по умолчанию. Я могу попробовать поймать поведение по умолчанию - не помешает ли это решению? - person Kfir; 03.05.2020