首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fabricjs画布对象

Fabricjs画布对象
EN

Stack Overflow用户
提问于 2017-07-28 15:41:10
回答 1查看 1.5K关注 0票数 0

下面的代码出现了一些问题:

代码语言:javascript
复制
var canvas = new fabric.Canvas('c');
canvas.selection = false;
fabric.loadSVGFromURL('./svg/1.svg',
    function (objects) {
        canvas.add.apply(canvas, objects);
        canvas.renderAll();
    }); -- this part is working
obj = canvas.getObjects();
obj.forEach(function (item, i) {
    console.log('plz work');
    item.setColor('red');
    item.set('selectable', false);
    canvas.renderAll();
}); - this isn't working 

当我用js文件编写这段代码时,它不起作用,但当我在浏览器控制台中运行它时,它工作得很好。它有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-28 16:34:09

这是因为,obj数组中没有对象(意味着它是空的),因为在画布上没有任何其他对象,而且由于loadSVGFromURL方法是异步的,所以在正确加载并添加到画布之前,无法真正获得SVG对象。

要解决这个问题,只需在loadSVGFromURL.的回调函数中进行迭代。

以下是工作代码:

代码语言:javascript
复制
var canvas = new fabric.Canvas('c');
canvas.selection = false;
fabric.loadSVGFromURL('https://istack.000webhostapp.com/1tf.svg', function(objects) {
   canvas.add.apply(canvas, objects);
   canvas.renderAll();

   //do the iteration here
   obj = canvas.getObjects();
   obj.forEach(function(item, i) {
      console.log('plz work');
      item.setColor('red');
      item.set('selectable', false);
      canvas.renderAll();
   });
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.16/fabric.min.js"></script>
<canvas id="c" width="200" height="200"></canvas>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45377492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档