当前位置:   article > 正文

vue项目中,修改fabric默认操作

vue项目中,修改fabric默认操作

场景:fabricjs绘制的元素,默认点击鼠标左键即可自由移动元素。需要把操作改为,点击鼠标左键先选中元素,只有选中的元素,按住鼠标左键后才能移动

  1. // 初始化canvas
  2. var canvas = new fabric.Canvas('c');
  3. // 添加一个矩形元素
  4. var rect = new fabric.Rect({
  5. left: 100,
  6. top: 100,
  7. fill: 'red',
  8. width: 60,
  9. height: 70,
  10. selectable: false // 初始时不可选中
  11. });
  12. canvas.add(rect);
  13. // 监听对象的选中事件
  14. canvas.on('mouse:down', function(options) {
  15. if (options.target) {
  16. var object = options.target;
  17. object.set({
  18. selectable: true, // 设置对象为可选中
  19. evented: false // 设置对象为不可触发事件,防止直接移动
  20. });
  21. canvas.setActiveObject(object); // 手动设置为选中状态
  22. canvas.renderAll();
  23. }
  24. });
  25. // 监听鼠标按下事件,用于启用移动
  26. canvas.on('mouse:move', function(options) {
  27. if (canvas.getActiveObject()) {
  28. var object = canvas.getActiveObject();
  29. object.set({
  30. evented: true // 当对象被选中时,设置为可触发事件,允许移动
  31. });
  32. }
  33. });
  34. // 监听鼠标释放事件,用于禁用直接的移动
  35. canvas.on('mouse:up', function(options) {
  36. if (canvas.getActiveObject()) {
  37. var object = canvas.getActiveObject();
  38. object.set({
  39. selectable: false, // 移动后设置对象为不可选中
  40. evented: true // 保持对象可触发事件状态
  41. });
  42. canvas.discardActiveObject(); // 取消对象的选中状态
  43. canvas.renderAll();
  44. }
  45. });

原理,通过修改参数,实现。
selectable: true, // 设置对象为可选中
evented: false // 设置对象为不可触发事件,防止直接移动

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/435229
推荐阅读
相关标签
  

闽ICP备14008679号