2

我有一个包含很多符号的图层,我想隐藏并显示包含他所有元素的整个图层。

隐藏我这样做,myLayer.remove();但显示它没有方法......
他们在他们的教程中说project.activeLayer.addChild(myObject);,但它似乎不适用于图层。(http://paperjs.org/tutorials/project-items/project-hierarchy/)

如果有人可以帮助我或告诉我是否需要以不同的方式做?

非常感谢你。

4

2 回答 2

8

当您调用 Layer.remove() 时,该 Layer 实例将从 project.layers 数组中删除。要重新显示已删除的图层(以及其中的任何对象),请将其推回 project.layers。

var blueSquare = Path.Rectangle(new Point(0, 0), new Size (50, 50));
blueSquare.fillColor = 'blue';

var newLayer = new Layer();
newLayer.activate();    // so that redCircle will be added to newLayer
var redCircle = Path.Circle(new Point(100, 100), 50);
redCircle.fillColor = 'red';

newLayer.remove();      // this prevents the redCircle from being drawn
project.layers.push(newLayer);  // now the redCircle is back

或者,newLayer.remove();您可以使用newLayer.visible = false;or来代替newLayer.opacity = 0;newLayer 实际上从 project.layers 数组中删除,尽管使用这些方法,即使无法看到实际的项目,选定的项目仍会显示线框。

于 2012-07-18T02:20:50.503 回答
2

有一个属性称为图层的可见性。您可以将其设置为真/假。

paper.Layer.prototype.hide = function(){
   this.visibility = false
}

paper.Layer.prototype.show = function(){
   this.visibility = true
}

现在,当您创建新图层时,您可以在对象上调用 show 或 hide 方法来更改可见性。

baseLayer = new Layer()

// hiding layer
baseLayer.hide()

//showing layer
baseLayer.show()

但是,这并不会将该层从活动层中移除。您所做的任何更改都将在活动层中,即使它被隐藏。

为此,我制作了一层称为。rootLayerrootLayer.activate()并在它们被隐藏时将其设置为活动 ( )。它是一个黑客,但它完成了工作

于 2019-04-22T11:35:30.663 回答