Fabric.js - 分组的iText不可编辑

 淡淡很淡淡真淡 发布于 2023-01-07 13:25

标题说明了所有.当a fabric.IText是a 的一部分时fabric.Group,它不再像可编辑文本那样做出反应.

这是一个用例:http://jsfiddle.net/vAjYd/

有没有办法解决这个问题?否则我必须写上我的小组.

顺便说一句:A fabric.Group有许多优点,但是禁用事件使得无法用于UI元素(即这个用例或按钮组作为文本和组的组).

1 个回答
  • 我可能来不及回答这个问题,但是你们当中很多人都希望我能够找到这个答案.你可以找到一个完美的iText解决方案,用户可以编辑iText的文本,这是fabric.group 工作解决方案的一部分.

    接下来的方法是:

      当用户双击所需的组时,我们将所有元素取消组合

      将重点放在iText元素上

      进入iText的编辑模式并选择所有文本,以便用户可以直接开始编辑..

      用户退出编辑模式后,元素将再次组合在一起.

      // ungroup objects in group
      var items
      var ungroup = function (group) {
          items = group._objects;
          group._restoreObjectsState();
          canvas.remove(group);
          for (var i = 0; i < items.length; i++) {
              canvas.add(items[i]);
          }
          // if you have disabled render on addition
          canvas.renderAll();
      };
      
      // Re-group when text editing finishes
      var dimensionText = new fabric.IText("Dimension Text", {
          fontFamily: 'Comic Sans',
          fontSize: 14,
          stroke: '#000',
          strokeWidth: 1,
          fill: "#000",
          left: 170,
          top: 60
      });
      dimensionText.on('editing:exited', function () {
          var items = [];
          canvas.forEachObject(function (obj) {
              items.push(obj);
              canvas.remove(obj);
          });
          var grp = new fabric.Group(items.reverse(), {});
          canvas.add(grp);
          grp.on('mousedown', fabricDblClick(grp, function (obj) {
              ungroup(grp);
              canvas.setActiveObject(dimensionText);
              dimensionText.enterEditing();
              dimensionText.selectAll();
          }));
      });
      

    2023-01-07 13:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有