gpt4 book ai didi

javascript - fabric.js 获取 IText 对象的 "edit"状态

转载 作者:搜寻专家 更新时间:2023-11-01 05:11:06 27 4
gpt4 key购买 nike

在 fabric.js 中,我想在我的 Canvas 上添加一些关键交互。如果选择了一个 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?

最佳答案

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

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

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

这是 fiddle :http://jsfiddle.net/bdgnrnxf/1/并链接到 documentation .

关于javascript - fabric.js 获取 IText 对象的 "edit"状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28626529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com