paper.js隐藏/显示图层?

问题描述 投票:1回答:2

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

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

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

非常感谢你。

paperjs
2个回答
8
投票

当您调用Layer.remove()时,将从project.layers数组中删除该Layer实例。要重新显示已删除的图层(以及其中的任何对象),请将其推回到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;代替newLayer.opacity = 0;,以便newLayer永远不会从project.layers数组中删除,尽管使用这些方法选择项目仍然显示线框,即使实际项目无法看到。


0
投票

有一种称为层的可见性的属性。你可以设置为true / false。

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()

然而,这不会将该层从活动层中移除。无论你做出什么样的改变,即使隐藏它,也会在活动层中。

为此我做了一个叫做的图层。 rootLayer并在隐藏时将其设置为活动(rootLayer.activate())。它是一个黑客,但它完成了工作

© www.soinside.com 2019 - 2024. All rights reserved.