【问题标题】:fabric.js get "edit" state of IText objectfabric.js 获得 IText 对象的“编辑”状态
【发布时间】:2015-04-21 23:41:46
【问题描述】:

在 fabric.js 中,我想在我的画布上添加一些关键交互。如果选择了 IText 对象,我希望在点击“del”键时将其删除。我通过以下方式完成了这项工作:

$('html').keyup(function(e){
  if (e.keyCode == 46) {
    obj = canvas.getActiveObject();
    canvas.remove(obj);
  }
});

现在的问题是,当我在编辑 IText 并按下 DEL 键时,对象显然也被删除了。 我想通过这样的方式来防止这种情况:

$('html').keyup(function(e){

  canvas.observe('text:editing:entered', editing = true);

  console.log(editing);

  if (editing == false) {
    if (e.keyCode == 46) {
      removeObject();
    }
  };

});

= 仅当我不在编辑 IText 时才删除对象

我在这里找到了这个火灾事件“editing:entered”:http://fabricjs.com/docs/fabric.IText.html 所以我尝试用上面的代码来捕捉这个。但是,当我选择文本并没有真正开始编辑它时,看起来这个事件已经触发了。

任何想法如何解决这个问题并检查我是否真的只是在编辑 IText?

【问题讨论】:

    标签: javascript fabricjs


    【解决方案1】:

    IText 对象有一个名为isEditing 的属性,可用于检查对象中的文本是否正在被编辑。

    要实现您所说的,您所要做的就是在从画布中删除对象之前检查此属性。代码如下所示:

    document.onkeyup = function (e) {
        if (e.keyCode == 46) {
            obj = canvas.getActiveObject();
            if (!obj.isEditing) {
                canvas.remove(obj);
            }
        }
    };
    

    这是小提琴:http://jsfiddle.net/bdgnrnxf/1/ 并链接到 documentation

    【讨论】:

    • 抱歉回复晚了,有一段时间没看这个帖子了。它完美地工作!谢谢。再次了解织物。
    猜你喜欢
    • 2023-04-02
    • 2015-06-09
    • 2020-10-15
    • 2023-03-03
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    相关资源
    最近更新 更多