我已经坚持了这么久。
我在 Three.js 中使用 Fabricjs Canvas 作为 3D 模型的纹理。每当 Canvas 发生变化时,模型都会将 Canvas 渲染为纹理。
我想单击模型并以编程方式在 Fabricjs Canvas 上选择一个项目。
我实现了使用 raycaster 将 3d 坐标转换为 Fabric 2D 坐标,因此我可以直接在模型上单击将新项目添加到 Canvas 。但是我找不到点击模型选择 Canvas 对象的方法,因为 Fabricjs 上没有“getObjectFromCoords”或类似方法
有没有办法以编程方式从 Fabricjs Canvas 中选择对象?
最佳答案
如果您只需要根据 (x,y)
选择一个对象(即不实际处理拖动、调整大小等),则有 fabric.Canvas.prototype。 Fabric.js 内部使用的 _searchPossibleTargets()
:
const pointer = {x: x, y: y}
const target = canvas._searchPossibleTargets(canvas.getObjects(), pointer)
if (target) {
canvas.setActiveObject(target).requestRenderAll()
} else {
canvas.discardActiveObject().requestRenderAll()
}
请注意,由于它是一个内部方法,其签名可能会因版本而异。
关于javascript - 以编程方式从坐标中选择 Fabricjs Canvas 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53609015/