2017-04-20 185 views
1

我想让一个名称为mainImage的对象作为背景图像,当用户尝试使用“sendBackwards”时,没有其他对象可以传递它。方法。sendBackwards不会通过某个对象(fabricjs)

所以,在我的思想,我需要知道

1.If the mainImage is at index 0 
2.If active selected object is at index 1 when I should not allow to use sendBackwards 

这是我尝试过,到目前为止,但我猜你将能够看到,这是失败的:

$scope.getActiveIndex = function() { 
      for (var i = 0; i < canvas.fabric._objects.length; i++) { 
      console.log("not active"); 
       if (canvas.fabric._objects[i].status === "active") { 
       console.log("active"); 
        return i; 
       } 
      } 
     } 

     $scope.sendBackwards = function() { 
      var currentObject = canvas.fabric.getActiveObject(); 

       for (var i = 0; i < canvas.fabric._objects.length; i++) { 
console.log($scope.getActiveIndex()); 
       if (canvas.fabric._objects[i].name === "mainImage" && $scope.getActiveIndex() == 1) { 
        console.log("Can not pass the background"); 
        return; 
       } else { 
        canvas.fabric.sendBackwards(currentObject); 
       } 
    } 
      canvas.fabric.renderAll(); 
    }; 

谢谢。

回答

0

解决了这个很容易:

$scope.sendBackwards = function() { 
     var currentObject = canvas.fabric.getActiveObject(); 
     var zIndex = canvas.fabric.getObjects().indexOf(currentObject); 
    if (zIndex == 1) { 
     return false; 
    } else { 
      canvas.fabric.sendBackwards(currentObject); 
    } 

    canvas.fabric.renderAll(); 

};