FabricJS предоставляет обширный список событий. Начиная с низкоуровневых событий мыши, мы полностью охвачены.
Начиная с этой статьи, я объясню, как мы можем работать с событиями с помощью FabricJS. Это будет частями, так что держитесь крепче и давайте начнем!
Что такое событие в Canvas?
Событие — это происшествие, сообщающее нам о том, что в нашей системе что-то изменилось. От нас зависит, как мы на это реагируем. События могут происходить где угодно. Подобно тому, как события происходят на веб-страницах, события Canvas ничем не отличаются.
Таким образом, когда мы щелкаем на холсте, это событие.
Когда мы поворачиваем что-либо на холсте, это также является событием.
Когда мы перетаскиваем что-тона холст, вы поняли, это тоже Е-В-Е-Н-Т.
Это не так сложно, правда? ~( ̄▽ ̄)~*
Использование метода on()
Поскольку Event API похож на jQuery, Underscore.js и другие библиотеки javascript, вы можете обнаружить некоторое сходство.
Однако, если вы совершенно не знакомы с jQuery или Underscore.js или забыли о них, ничего страшного, мы все равно можем заставить их работать!
Метод on() просто прикрепляет событие к любому выбранному элементу. В данном случае экземпляры.
Добавление событий мыши на холст
В качестве примера я использовал события mouse:up и mouse:down и присоединил их к экземпляру холста с помощью метод on().
Событие mouse:up запускается всякий раз, когда кнопка мыши отпускается. Напротив, событие mouse:down возникает всякий раз, когда нажимается кнопка мыши.
Здесь я создал экземпляр fabric.Canvas и с помощью свойства backgroundColor установил черный цвет фона. Однако я хочу, чтобы его цвет фона менялся на белый, когда происходит событие наведения мыши и красный, когда происходит событие нажатия кнопки мыши. Для обработки этих событий я использовал метод on() для инициализации прослушивателя событий. Далее обработчик меняет цвет фона и записывает вывод для нас в консоль.
var canvas = new fabric.Canvas("canvas", { backgroundColor: "black", isDrawingMode: false, }); canvas.on("mouse:up", () => { console.log("mouse up event"); canvas.setBackgroundColor("white", canvas.renderAll.bind(canvas)); }); canvas.on("mouse:down", () => { console.log("mouse down event"); canvas.setBackgroundColor("red", canvas.renderAll.bind(canvas)); });
События холста, которые реагируют на выбор пользователя
Всякий раз, когда пользователь взаимодействует с объектами на холсте, могут быть активированы события выбора пользователя. Ниже перечислены события, которые запускаются холстом при выборе пользователя.
- selection:created — когда пользователь переходит от нет выбора к выбору чего-либо, это событие запускается.
- selection:updated — Множественный выбор, переключение с одиночного на множественный выбор или перемещениевыделения с объекта A на B запускает этот событие.
- before:selection:cleared — это событие запускается непосредственно перед событием selection:cleared.
- selection:cleared: это событие запускается, когда пользователь отменяет выбор объекта или удаляет множественный выбор.
Вот пример кода, чтобы продемонстрировать это:
var canvas = new fabric.Canvas("canvas", { backgroundColor: "black", isDrawingMode: false, }); var rect = new fabric.Rect({ width: 60, height: 80, top: 30, left: 120, fill: "white", stroke: "#ffdead", }); var square = new fabric.Rect({ width: 90, height: 90, top: 80, angle: 14, left: 300, fill: "#43b3ae", stroke: "white", }); canvas.add(rect, square); canvas.on("selection:created", (obj) => { var selectedObj = obj.target; console.log("An object has been selected"); }); canvas.on("selection:updated", (obj) => { console.log("You have selected the other object"); });