11.Layers, Containers and Interfaces

图层、容器和接口

当设计一个Ventuz场景时,某些节点的组合或设计会反复出现。例如在演示中使用的按钮或滑块,在整个过程中的呈现和外观都是一致的,唯一变化的是尺寸、位置和标签。

 

在设计复杂的演示时,另一个常见的主题是场景的语义结构。可能有一个场景负责呈现用户界面,另一个用于与外部设备对话,另一个用于渲染图像集合。在一个视觉空间中拥有所有这些节点不仅令人困惑,而且完全不必要。

在这种情况下,容器节点可以提高生产效率,因此可以将多个节点组合到容器中,形成一个新的节点类型。把多个节点放到容器中形成单个节点,放置到层次结构中,使场景更容易理解,而不是复制整个子树。

 

1、创建容器

   创建容器的方法和创建其它节点的方法相同。通过拖动鼠标左键,将层次结构或内容容器拖动到场景的各个部分。容器都是一些非常通用的节点,而且场景中都会包含不同的容器,所以最好在节点名称上双击鼠标左键,命名一个合适的名称。

 

容器类型:

 

Hierarchy Container

可以包含任意数量的层次节点,可以把多个层次节点封装到一个层次节点上

 

Output

提供了将对象链接到层次结构容器的可能性。必须放在层次结构容器中

 

Content Container

可以将任意多个内容节点封装到该节点中

 

Container Info

提供层次结构容器节点的名称和链接索引的信息

 

2、曝光特性

 

虽然容器或层的设计主要是为了掩盖实现的复杂性,但通常需要从容器外部调整可封装节点的一些属性。一个按钮可以允许用户改变它的颜色和标签,一个电影播放器,我需要一个文件名才能正常工作。

 

层或容器中节点的任何属性都可以暴露给外部使用。

 

若要公开属性,请单击属性编辑器中属性名称的鼠标右键,然后从出现的上下文菜单中选择“公开/编辑”。属性名左边的正方形将变成绿色,表示这是一个已公开的属性。注意,公开的属性名必须是容器中唯一的。如果两个属性具有相同的名称会扰乱Ventuz绑定逻辑。

 

 

 

3、层容器

层是一种特殊的容器,它们只能放在图层中。每个层中都可以放内容或层次节点,并公开它们的属性,就像使用层次容器和内容容器一样。如果要编辑层,只要单击层编辑器上的“铅笔”,就可以编辑层上的内容。

 

每个层都有一个根节点,它放置在层中,不能被移除。在层次结构编辑器的左上角找到一个3D层的根节点。2D层的根节点在内容编辑器中总是可见。根节点的属性也可以像其他节点一样绑定和公开。默认情况下,它的一些属性被暴露,另一些属性需要手动公开以使其从外部访问。另外,层不能放在容器中,因此不能将它们合并到容器中,但可以放到层组中。

 

4、密封容器

 

有时,作者希望向另一个用户分发定制的功能。最终用户应该能够渲染和调整功能,但不能看到它是如何完成的。在这种情况下,功能可以封装到一个容器中,然后密封。有两种类型的密封:

简单密封:这种作用类似于容器上的写保护。用户不能进入容器,它是密封的但任何人都可以拆下密封再次打开容器。

 

•永久密封:永久清除所有进入容器的可能性。这种类型的密封不能撤消。

 

密封操作:

5、接口容器

 

在工作中使用容器时,不可避免要修改容器。无论是需要修复的bug还是添加的附加功能,更改都是在一个实例中完成的,手动更新到所有其他实例中。通常的方法是删除所有其他实例,复制修改后的版本并手动重建所有已存在的绑定。接口是容器概念的扩展,以解决上述问题以及其他问题。它们定义一个容器必须提供的属性,以便在场景的某个部分使用。即使在封装的节点被移除时,容器接口也保持完整的属性(因此它的绑定也保持不变)。当容器的内容被替换时,重新公开接口属性就可以完成其它实例的更新。

 

定义接口:

新定义的接口必须包含容器需要公开的属性。当选择容器时,在属性编辑器的底部会出现一个“接口”按钮。按下它,容器被升级到一个接口容器。容器接口比非容器接口多了两条线。截图中,第一行为非容器接口,第二行为容器接口。

 

当将容器更改为接口容器时,所有已公开的属性都将成为接口属性。它们之间的区别是,即使属性不再暴露,接口属性仍然在接口上定义。在此之后公开的所有属性也自动成为接口属性。

 

移除暴露属性的节点时,接口属性保持不变,但以浅灰色显示。若要删除接口属性定义,请双击鼠标左键单击接口属性,然后按“排除”或使用“属性编辑器”底部的“清除”按钮,删除没有相应的暴露节点的所有接口属性。

 

与公开节点断开连接的接口属性保留其最后有效值。

 

替换接口内容:

当拖放接口容器时,场景中的所有接口容器都用深灰色边框突出显示。当拖动到目标接口容器上时,该接口容器边框将变为红色。在该状态下释放鼠标按钮不会删除原始节点,但会替换源节点的目标内容。

 

接口属性被替换后,Ventuz将按照一定规则重新连接接口属性。规则如下:

1、属性类型必须相同

2、属性名必须一样,同时区分大小写

从仓储中拖动出的接口容器也遵循上述规则。为了提高自动连接的性能,必须所有属性都唯一。

6、图层接口

层也可以被转换成图层接口,不过被转换后只能保留微被公开的属性,这样绑定就不会丢失,但他们的内容不会被其它接口的内容替换。

 

通过仓储,接口容器可以很容易更改或更新其它实例。因此我们可以把接口容器拖到已经打开的仓储中创建仓储项。项目中的每个实例都会引用它,因此可以很容易地更新。

原文地址:https://www.cnblogs.com/ljf10223063/p/8744772.html