如何在fabric.js中创建一个组

3

我想创建一个包含图像和文本组合的组件,并且它们需要作为一个整体来使用,但是当我这样做时:

https://gist.github.com/1682293

我无法移动该组。为使其正常工作,我需要先将图像和文本添加到画布中,然后使用这些图像和文本创建一个组,最后删除单独添加的图像和文本。那我做错了什么呢?
2个回答

2
这个问题似乎在最新版本的fabric.js中已经修复了。我能够通过版本0.9.15使它工作:
function drawImage(name, left, top) {
    fabric.Image.fromURL('../nav-host.png', function (img) {
        var oImg = img.scale(4);
        var caption = new fabric.Text(name, {
            fontFamily: 'Arial'
        });
        var group = new fabric.Group([oImg, caption], { left: left, top: top });
        canvas.add(group);
    });
}

0

我写了一段代码,可以动态地从计数器脚本中加入部分生成的文本。这段代码将添加一个由图像和文本组成的组。文本被设置在图像上方,并且随着每次单击按钮而更新,因为它们被添加到您的画布中。所以当您第一次单击按钮时,文本将会显示 Sticky Card#1。下一次点击将提供您第二个组,其中文本说Sticky card #2。 图像大小只有30px X 30px。

这是我页面头部的计数器脚本。

  $(window).load(function(){
    $('.stickycard').click(function() {
    $('#cardcount').html(function(i, val) { return val*1+1; });
    });
  });

这是我在 kitchensink.js 中使用的 fabric.js 代码。
if ($(element).hasClass('image1')) {
    fabric.Image.fromURL('toolimg/yellow-stickycard.png', function(img) {

    var yellcard = img.scale(1.0).set({ left: 22, top: 15 }); 

        var cardcount = $('#cardcount').text();

        var sticky = new fabric.Text('Sticky Card #'+ (cardcount), {
            fontSize: 12,
            cornerSize: 6
            });

            var group = new fabric.Group([ sticky, yellcard ], {
            left: 150,
            top: 100,
            cornerSize: 6
            });

             group.set({
             left: left,
             top: top,

             });


        canvas.add(group);

          }); 
    }

这是我的HTML代码,用于按钮和显示计数的div。

  <button type="button" class="btn image1 stickycard" id="yellstickycard"><img src="toolimg/yellow-stickycard.png" /></button>
  <div id="cardcount">0</div>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接