Javascript 如何对具有fabric js的画布上的每个对象使用if isType()?
我试图在画布上显示每个对象的某些属性,但我在编写代码时遇到了困难。例如,我希望下面的代码能够识别形状、文本和图像对象之间的差异,并根据类型显示属性 console.log的属性: 对于canavas上的每个对象,检查-Javascript 如何对具有fabric js的画布上的每个对象使用if isType()?,javascript,html,canvas,html5-canvas,fabricjs,Javascript,Html,Canvas,Html5 Canvas,Fabricjs,我试图在画布上显示每个对象的某些属性,但我在编写代码时遇到了困难。例如,我希望下面的代码能够识别形状、文本和图像对象之间的差异,并根据类型显示属性 console.log的属性: 对于canavas上的每个对象,检查- 然后是图像URL(源)和缩放要使其正常工作,需要添加/更改两件事 将对象.isType('xyz')更改为!object.isType('text')&&!object.isType('image') (因为没有任何称为“xyz”的类型) 在函数中封装获取对象属性的
- 然后是图像URL(源)和缩放要使其正常工作,需要添加/更改两件事
- 将
更改为对象.isType('xyz')
(因为没有任何称为“xyz”的类型)!object.isType('text')&&!object.isType('image')
- 在函数中封装获取对象属性的整个代码,并在图像加载时调用该函数,以正确获取图像对象属性
fabric.Object.prototype.objectCaching=false; var canvas=newfabric.canvas('canvas'); canvas.add(新的fabric.Text('foo'){ fontFamily:“机器人”, 左:100,, 前100名, 尺寸:25 })); canvas.add(newfabric.Text('help'){ fontFamily:“机器人”, 左:100,, 前200名, 尺寸:25 })); 画布。添加(新织物。三角形)({ 填充:“绿色”, 左:200,, 排名:200 })); fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg,函数(myImg){ //我为创建了一个额外的变量来更改一些图像属性 var img1=myImg.set({ 左:200,, 排名:0, 宽度:150, 身高:150 }); canvas.add(img1); getAttributes(); }); canvas.renderAll(); 函数getAttributes(){ canvas.getObjects().forEach(对象=>{ 如果(!object.isType('text')&&(!object.isType('image')){//对象是一个形状 log(object.scaleX,object.fill); }如果(object.isType('text'){//对象是文本,则为else console.log(object.text、object.fontFamily、object.fontSize*3、object.scaleX、object.fill); }else如果(object.isType('image'){//对象是一个图像 log(object.name、object.scaleX、object.fill); } }); }
您的浏览器不支持画布元素。
canvas.getObjects().forEach(object=>{ if(object.isType('xyz')) { // object is a shape console.log(object.scaleX, object.fill); } else if(object.isType('text')) { // object is a text console.log(object.text, object.fontFamily, object.fontSize*3, object.scaleX, object.fill); } else { // object is an image console.log(object.name, object.scaleX, object.fill); } })
- 将