【问题标题】:Fabric.js: How to get the properties' value of the object in a group?Fabric.js:如何获取组中对象的属性值?
【发布时间】:2013-11-28 17:45:57
【问题描述】:

我正在使用 Fabric.js 创建一个绘图画布。请问有没有办法获取组对象中对象的属性值?

例如: 我创建了一个矩形和一个文本对象,并将它们组合在一起

new fabric.group([rect1,text1],{
        top:100,
        left:100
    });

我试过如下:

var objsInCanvas = canvas.getObjects();
for (obj in objsInCanvas) {
    return objsInCanvas[obj].get('text')
}

但它并没有为我获得文本的价值。有人可以就此提出建议吗?

【问题讨论】:

    标签: javascript canvas fabricjs


    【解决方案1】:

    我还没有足够的代表发表评论,但我可以看到一些可能导致此问题的原因。如果没有更多代码,我将不得不假设一些事情。

    首先,在实例化一个新组时,您需要将 Fabric 对象大写。

    var group = new fabric.Group([rect1, text1],{
      ...    
    });
    

    其次,如果还没有,则需要将组添加到画布中

    canvas.add(group);
    

    我确定你在代码中做到了,但是嗯。然后我们就可以找到好东西了……

    您的 for 循环会抓取画布上的所有对象,对吗?事实证明,如果您的对象在一个组中,那么您正在抓取该组本身,而不是其中的单个对象。您还需要遍历该组中的所有对象以获取它们的任何属性。

    我做了一个快速的小提琴,只是想看看我能不能让它工作。它应该让你知道你需要做什么。

    http://jsfiddle.net/pUw5k/

    【讨论】:

    • 感谢小提琴中的详细示例!
    • fiddle 帮了大忙!
    【解决方案2】:

    您可以通过 item() 方法访问组中的单个对象:

    例如:

    group.item(0).set({
      text: 'trololo',
      fill: 'white'
    });  //Retrieve item(0) and sets its properties
    
    group.item(1).setFill('red'); ////Retrieve item(1) and sets its properties
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-27
      • 2018-11-14
      • 2013-04-01
      • 2021-04-03
      • 2012-09-15
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      相关资源
      最近更新 更多