标题说明了所有.当a fabric.IText
是a 的一部分时fabric.Group
,它不再像可编辑文本那样做出反应.
这是一个用例:http://jsfiddle.net/vAjYd/
有没有办法解决这个问题?否则我必须写上我的小组.
顺便说一句:A fabric.Group
有许多优点,但是禁用事件使得无法用于UI元素(即这个用例或按钮组作为文本和组的组).
我可能来不及回答这个问题,但是你们当中很多人都希望我能够找到这个答案.你可以找到一个完美的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(); })); });