首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解Fabric Z-Index

了解Fabric Z-Index
EN

Stack Overflow用户
提问于 2018-01-20 05:39:11
回答 1查看 636关注 0票数 0

我很难理解画布对象的moveto功能。根据我的z索引计划,我正在尝试加载对象并定位它们。这可能会导致一个对象比另一个对象更早加载,但具有更高的Z-Index比后者更早加载。但这并不像计划的那样工作。Fabric是否只是根据它们在画布上的时间添加将一个添加到另一个上?

这是设置Z轴的代码。

代码语言:javascript
复制
function makeMySvg(urlNames,yvalues,xvalues,zvalues,dasArray,theCanvas)
{
    var targetUrl = urlNames.shift();
    var targetY = yvalues.shift();
    var targetX = xvalues.shift();
    var targetZ = zvalues.shift();
    if (targetUrl){
    fabric.loadSVGFromURL(targetUrl,

    function(objects)
    {

            var obj = new fabric.util.groupSVGElements(objects, {
              //left: versatzx-14, // 1/2 breite 28px hoehe 33px
              //top: versatzy+axpos1/10*factor,
              top: targetY,
              left: targetX,
              opacity: 1,
              scaleX: 1,
              scaleY: 1,
              selectable: true,
              objectCaching: true
            });

            theCanvas.add(obj);
            dasArray.push(obj);
            theCanvas.moveTo(obj, targetZ);
            console.log(targetZ);
            //obj.moveTo(targetZ);
            makeMySvg(urlNames,yvalues,xvalues,zvalues,dasArray,theCanvas);

    });
  }
  theCanvas.renderAll();
}



 var axleUrls =['images/axe180a.svg', 'images/axe180b.svg'];
 var axleY = [versatzy+axpos1/10*factor,versatzy+oldlength*5-axpos2/10*factor-30];
 var axleX = [versatzx-45,versatzx-45];
 var axleZ = [28,29];
 var axle=[];

        makeMySvg(axleUrls, axleY, axleX, axleZ, axle, canvas);
EN

回答 1

Stack Overflow用户

发布于 2018-01-20 08:15:12

是的,fabricJS将根据它们完成加载的顺序,将一个添加到另一个之上。您可以通过添加数组中的所有对象来修复此问题,而不是执行canvas.add

从一个与要加载url的数组大小相同的数组开始。

代码语言:javascript
复制
var myUrls = ['urlA', 'urlB', 'urlC'];
var placeHolders = [null, null, null];

myUrls.forEach(function(url, index) {
  fabric.loadSVGFromURL(targetUrl, function(objects) {
        var obj = new fabric.util.groupSVGElements(objects, {
          //left: versatzx-14, // 1/2 breite 28px hoehe 33px
          //top: versatzy+axpos1/10*factor,
          top: targetY,
          left: targetX,
          opacity: 1,
          scaleX: 1,
          scaleY: 1,
          selectable: true,
          objectCaching: true
        });
        dasArray.push(obj);
        placeHolders[index] = obj;
  })
});
canvas.add(...placeHolders);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48349920

复制
相关文章

相似问题

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