使用别名

使用 Alias 来获得对 Kanzi 节点的一致访问。您可以使用别名来访问 Kanzi Studio 中的节点,并使用 Kanzi Engine API。

因为在 Kanzi Studio 中创建应用程序时会在项目的节点树中移动节点,所以跟踪它们的最简单方法是使用别名。您可以使用绑定或 Kanzi Engine API 通过哈希符号 (#) 后跟别名的名称来检索别名目标节点,而不考虑节点在项目中的位置。

请注意,您必须始终将别名添加到要从中检索别名的节点的资源字典中。

从节点创建别名

当您从一个节点创建一个别名时,Kanzi Studio 会将该别名添加到该节点最近的包含资源字典的祖先的资源字典中。例如,如果一个 Scene 有一个资源字典,并且它包含一个 Camera,当您直接从 Camera 节点创建一个别名时,Kanzi Studio 会自动将指向 Camera 节点的别名添加到 Scene 节点的资源字典中。

要创建别名:

  1. 在 Node Tree 按 Alt 并右键单击 中,将您希望 Kanzi Studio 自动从该节点的后代中添加别名的节点,并选择 Resource Dictionary。

    例如,如果您想使用别名访问 Viewport 2D 节点内的节点,请将 Resource Dictionary 添加到该 Viewport 2D。

    ../../_images/add-resource-dictionary.png
  2. 在 Node Tree 按 Alt 并右键单击 中,选择包含资源字典的节点的子节点,并选择 Alias。

    例如:在包含 Camera 的 Viewport 2D 中,按 Alt 并右键单击 Camera,并选择 Alias。

    Kanzi Studio 创建一个指向您创建别名的节点的别名,并将其添加到其最近的包含资源字典的祖先节点的资源字典中。

    ../../_images/create-alias1.png ../../_images/alias-in-dictionaries.png

创建别名并手动设置其目标

要创建别名并手动设置其目标:

  1. 在 Node Tree 按 Alt 并右键单击 中,将节点添加到您要为其添加别名的资源字典,并选择 Resource Dictionary。

    例如,如果您想使用别名访问 Viewport 2D 节点内的节点,请将 Resource Dictionary 添加到该 Viewport 2D。

    ../../_images/add-resource-dictionary.png
  2. 在 Dictionaries 中,选择您要添加别名的资源字典,单击 + Add Resource,选择 Create > Alias,并命名该别名。

    Kanzi Studio 向您在 Dictionaries 中选择的资源字典添加了一个别名。

    Dictionaries 显示了在 Node Tree 中您选择的节点本地的资源的资源 ID。

    ../../_images/create-new-alias-resource.png
  3. 在 Dictionaries 中,单击别名名称旁边的单元格,并在下拉菜单中选择您要使用此别名访问的节点。

    使用 <Relative> 输入相对于您为其资源字典添加了别名的节点的路径。

    当可以从拥有别名所在资源字典的节点到达目标节点时,请使用绝对路径。

    ../../_images/alias-name-target.png

在绑定中使用别名

使用绑定将属性或属性字段的值设置为来自另一个属性、属性字段或数据源的值。

要在绑定中使用别名,请在 Binding Editor 中的 Expression 字段中输入大括号内的 # 符号,后跟别名名称,再后跟斜杠和别名指向的项目的属性名称。

例如,要将属性绑定到别名 Grid 指向的节点的 Layout Width 属性,请输入

{#Grid/Node.Width}

请参阅 使用绑定 和 Bindings expressions 参考。

../../_images/alias-binding-expression.png

使用别名设置动作目标

要使用别名定义动作的目标项:

  1. 创建一个别名。请参阅 从节点创建别名。

  2. 向节点添加触发器。请参阅 使用触发器。

  3. 在 Node Components > Triggers 按 Alt 并右键单击 中,应用您在上一步中添加的触发器并选择一个操作。

    例如,选择 Set Property 操作。

  4. 在您创建的操作中,将 Target Item 属性设置为您在第一步中创建的别名。

    ../../_images/alias-as-target-item-in-the-message-editor.png

在 API 中使用 Aliases

要通过 API 使用别名访问节点

// Get the reference to the Grid List Box 3D node using the alias #Grid List Box that is
// in the resource dictionary of the Scene node.
GridListBox3DSharedPtr gridListBox = scene->lookupNode<GridListBox3D>("#Grid List Box");

另请参阅

使用资源字典

资源管理

使用绑定

Bindings expressions 参考