Canvas 如何获取组中某些文本的shadow.offsetX值?

Canvas 如何获取组中某些文本的shadow.offsetX值?,canvas,fabricjs,Canvas,Fabricjs,我试图引用一些文本的shadow offsetX值,这些文本被一个矩形分组,但在组的mousedown事件中,我一直得到'cannotreadproperty'offsetX'of null' 如何获取组中某些文本的shadow.offsetX值 代码段: 。。。 //以随机的X、Y坐标向画布添加一些文本 var X=数学地板((数学随机()*350)+30); 变量Y=数学地板((数学随机()*350)+30) 如果我不将对象分组,一切正常 谢谢当分组时,所有对象都成为组的子对象,您需要在单

我试图引用一些文本的shadow offsetX值,这些文本被一个矩形分组,但在组的mousedown事件中,我一直得到'cannotreadproperty'offsetX'of null'

如何获取组中某些文本的shadow.offsetX值

代码段:

。。。 //以随机的X、Y坐标向画布添加一些文本 var X=数学地板((数学随机()*350)+30); 变量Y=数学地板((数学随机()*350)+30)

如果我不将对象分组,一切正常


谢谢

当分组时,所有对象都成为组的子对象,您需要在单击的组上使用
.getObjects()
调用以获取子对象。下面的代码将正确地记录
shadow.offsetX

var canvas=newfabric.canvas('c',{selection:false,preserveObjectStacking:true});
window.canvas=画布;
var text=new fabric.IText(“这是一些测试文本”{
fontFamily:“信使新”,
左:5,,
前五名,
光标颜色:“黑色”,
大概时间:50,
草率:250,
游标宽度:2,
编辑边框颜色:“#F30D0D”,
线宽:1,
尺寸:15,
fontStyle:'正常',
fontWeight:'正常',
fontFamily:“Arial”,
textAlign:'左',
文本装饰:“”,
尺寸:15,
填写:“#ffffff”,
id:2,
填写:“#000000”
});
//对文本应用阴影
变量阴影={
颜色:“rgb(50,50,50)”,
模糊:3,
抵销额:1,
副职:1
}
text.setShadow(阴影);
//添加一个矩形
var rect=new fabric.rect({
左:0,,
排名:0,
宽度:100,
身高:100,
填写:“#ffcc12”,
id:2,
不透明度:1
});
//canvas.add(rect);
//canvas.add(文本);
var group=newfabric.group([rect,text]);
组.on('mousedown',函数(e){
var clickedGroup=e.target;
var groupedObjects=clickedGroup.getObjects();
var groupedText=groupedObjects[1];
var shadowOffsetX=groupedText.shadow.offsetX;
console.log(shadowOffsetX)
});
canvas.add(组);
canvas.renderAll();
canvas.setActiveObject(文本);
var activeObject=canvas.getActiveObject();
log(activeObject.id)
画布{
边框:1px实心#ccc;
}

非常感谢您简洁且非常有用的回答!我真的很喜欢Fabric JS,但希望他们的网站上有更全面的文档和更多的示例,或者我只是找不到合适的地方?这里介绍了组:这里有大量的演示列表:
var text = new fabric.IText("This is some\ntest text", {
fontFamily: 'Courier New',
left: X+5,
top: Y+5,
    cursorColor: 'black',
    cursorDelay: 50,
    cursorDuration: 250,
    cursorWidth: 2,
    editingBorderColor: '#F30D0D',
    lineHeight: 1,
    fontSize: 15,
    fontStyle: 'normal',
    fontWeight: 'normal',
    fontFamily: 'Arial',
    textAlign: 'left',
    textDecoration: '',
    fontSize: 15,
    fill: '#ffffff',
    id: 2,
    fill: '#000000'
});

//APPLY SHADOW TO TEXT
var shadow = {
    color: 'rgb(50,50,50)',
    blur: 3,    
    offsetX: 1,
    offsetY: 1
}
text.setShadow(shadow);

//ADD A RECTANGLE
var rect = new fabric.Rect({
    left: X,
    top: Y,
    width: 100,
    height: 100,
    fill: '#ffcc12',
    id: 2,
    opacity: 1
});

//canvas.add(rect);
//canvas.add(text);
var group = new fabric.Group([rect, text]);
canvas.add(group);
canvas.renderAll();

canvas.setActiveObject(text);
var activeObject = canvas.getActiveObject();
console.log(activeObject.id);