图层、容器和接口

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

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

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

1、创建容器

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

容器类型:

 

Hierarchy Container

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

 

Output

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

 

Content Container

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

 

Container Info

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

2、曝光特性

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

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

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

3、层容器

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

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

4、密封容器

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

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

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

密封操作:

5、接口容器

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

定义接口:

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

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

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

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

替换接口内容:

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

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

1、属性类型必须相同

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

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

6、图层接口

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

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

11.Layers, Containers and Interfaces的更多相关文章

  1. Google C++ Style Guide

    Background C++ is one of the main development languages used by many of Google's open-source project ...

  2. Google C++ 代码规范

    Google C++ Style Guide   Table of Contents Header Files Self-contained Headers The #define Guard For ...

  3. TUXEDO管理命令总结

    tmboot  启动服务: 参数说明: -l  lmid 启动逻辑服务器名为lmcd服务器上的所有进程 -g grpname 启动GROUP名为grpname的所有进程 -i  srvid 启动SRV ...

  4. Whitespace character

    In computer science, whitespace is any character or series of whitespace characters that represent h ...

  5. 用于NLP的CNN架构搬运:from keras0.x to keras2.x

    本文亮点: 将用于自然语言处理的CNN架构,从keras0.3.3搬运到了keras2.x,强行练习了Sequential+Model的混合使用,具体来说,是Model里嵌套了Sequential. ...

  6. RSA 非对称加密【转】

    演示代码:https://pan.baidu.com/s/10rfSUUDEEHvCDEYH0oEVCw Base64工具类,可以让rsa编码的乱码变成一串字符序列 1 package com.uti ...

  7. i2c总线驱动,总线设备(适配器),从设备,从设备驱动的注册以及匹配

    常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 随笔分类 ARM裸机(13) C(8) C++(8) GNU-ARM汇编 Linux驱动(24) Linux应用编程(5) Makefile ...

  8. VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition

    Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan[‡] & Andrew Zi ...

  9. Single VIP LLB and SLB config

    Single VIP LLB and SLB config >>>>>>>>>>>>>>>>>&g ...

随机推荐

  1. idea中找不到maven projects的集中解决办法

    今天正常打开idea,却发现maven窗口找不到了:试了这些方法 首先idea自带了maven控件,不像Eclipse还需要下载控件,如果你以前有maven在右边,出于某种原因,消失找不到 了,你可以 ...

  2. 添物零基础到大型全栈架构师 Java实战及解析(实战篇)- 概述

    ​ 实战篇是在基础之上,进一步提升的内容.通过实战篇可以深入理解Java相关框架和库的使用,能够独立开发小模块,或者按照架构师的指导进行代码编写和完善. 主要讲解核心框架和库的使用和使用场景介绍.通过 ...

  3. hdu 1874 dijkstra 队列实现 比数组高效特别在稀疏图

    参考  http://blog.csdn.net/zhuyingqingfen/article/details/6370561 刘汝佳白皮书 #include<stdio.h> #incl ...

  4. Swift对象创建过程(PUT Object)——纠删码策略(二)

    相应Object使用纠删码(EC)作为存储策略时,BaseObjectController类中PUT和GET需要调用的一些方法会被ECObjectController中相应函数覆盖. 在GET Obj ...

  5. 转载 字符串hash

    转载自:http://www.cnblogs.com/jiu0821/p/4554352.html 求一个字符串的hash值: •现在我们希望找到一个hash函数,使得每一个字符串都能够映射到一个整数 ...

  6. [bzoj1833][ZJOI2010]数字计数(数位DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1833 分析:简单的数位DP f[i][j][k]表示在i位数.最高位j的所有数字中k的 ...

  7. Mabatis错误--Parameter index out of range

    昨天遇到一个错误,之前也遇到过,但是之前遇到很快就解决了,昨天遇到这个错误当时看了大概10来分钟,还是没搞好,今天才来搞好了. 错误信息如下 08:34:43,302 DEBUG getTeacher ...

  8. delphi不同版本字符串类型的演化

    string,DELPHI2009以前的版本string=ansistring,一个字符占一个字节,DELPHI2009及以上版本string=unicodestring,一个字符占二个字节. cha ...

  9. AE 创建

    using System; using System.Drawing; using System.Runtime.InteropServices; using ESRI.ArcGIS.ADF; usi ...

  10. 解决Mysql存储中文的问题

    Mysql无法存储中文或者中文乱码,当然是编码的问题.你可以mysql -u root -p进入Mysql命令行环境,然后输入命令查看当前编码格式: mysql> show variables ...