如何使画布中的对象不可选择
How to make objects in canvas unselectable?
我想使画布中的所有对象都不可选择。我找到了可选择的方法,但我没有找到将其实现到所有对象的方法。
我一直在寻找一个不可移动和无法编辑结构文本,我终于找到了一个将多个SO组合在一起的解决方案,希望能为某人节省一些时间。
在我的情况下,使用"可选":false是不够的:文本仍然是可编辑的,光标仍然是"可移动光标"(即使对象不可选)。
我不得不添加"evented":false。这里有一个例子:
this.canvas.add(new fabric.Text("Hello world !", {
"selectable": false,
"evented": false
}));
您可以在此处使用不同的控制选项:http://fabricjs.com/controls-customization
您可以使用以下代码使所有元素不可选择
canvas.deactivateAll();
canvas.renderAll();
canvas.forEachObject(function(object){
object.selectable = false;
});
在选项-中有这样的方法
selectable: false
or
object.set({selectable:false})
or
object.selectable = false;
在父HTML元素上使用css属性pointer-events
:
.locked {
pointer-events: none;
}
从javascript:设置此属性
let canvasElement = document.getElementsByClassName("canvas-container")[0]
canvasElement.classList.add("locked")
解锁画布:
canvasElement.classList.remove("locked")
canvas._objects.forEach(obj => {obj.selectable = false;});
canvas.discardActiveObject();
这应该奏效!discardActiveObject
应该触发请求重新应答器的事件,因此不需要手动调用renderAll
。通常,您应该始终使用requestRenderAll
而不是renderAll
。
相关文章:
- 将代码转换为可重用对象
- jQuery-检测选择对象是否添加或删除了选项
- 如何在我传递给视图的ViewModel集合中获得jQuery可选对象的值,以作为有序列表进行迭代
- 如何通过Fabric.js只点击实际内容来选择对象
- 为什么在fabricjs中可选择的不适用于一组圆
- 如何在引导日期选取器中限制可选择的日期范围
- j查询选择器不选择对象
- 在选择对象中使用多个 add() 命令
- 如何使用 jQuery 克隆选择对象
- Datatablesjquery插件-限制可选择的行数
- 最新typescript编译器版本(0.9.5)中的可索引对象
- 在ko.applyBindings(..)中执行Knockout js订阅函数(用于可观察对象)
- 模仿`overflow-y:auto;overflow-x:visible `在jQuery UI可排序对象上
- 使用jQuery使动态元素可选择
- Knockout.js用单个json对象绑定一个可观察对象
- 用Javascript创建一个动态选择对象
- IndexedBD从上到下选择对象
- 当您已经选择对象时,如何在jQuery中获取直属子项
- 在Javascript中随机选择对象的可枚举属性
- 基于observable,从可观察对象的对象中选择observable