使用触发器

触发器和动作可用于创建基于用户输入的交互。 触发器定义条件,动作定义触发器在符合条件时的动作。例如,要在节点附加在场景图时执行 JavaScript 脚本,将附加时 (On Attached) 触发器添加至该节点,并将执行脚本 (Execute Script) 动作添加至该触发器。

Kanzi Studio 有各种可以添加到触发器的动作。例如,您可以添加打印至 日志 (Log) 窗口 (写入日志 (Write Log)) 的动作,将属性设置为特定值 (设置属性 (Set Property)),导航至页面 (Page) 节点 (导航至页面 (Navigate to Page)),或者更改应用程序主题 (激活主题 (Activate Theme))。

触发器消息

当触发器拦截根据动作生成的消息时,您可以设置触发器对该消息执行的动作。您可以:

通过触发器,您可以在消息产生的节点拦截消息,或者在其任何祖先节点或子孙节点的触发器中拦截消息。您可以在相同节点拦截许多不同的消息类型。当消息沿工程树向上传递时,消息为冒泡式传递。当消息沿工程树向下传递时,消息为隧道式传递。您可以在创建消息的动作中设置消息是否通过冒泡式、隧道式或二者结合的方式传递。

例如,如果动作创建冒泡消息,在动作产生消息后,消息从接收输入的节点冒泡至其父节点,然后到父节点的父节点,以此类推,直到触发器拦截该消息。如果该触发器也处理该消息,消息停止冒泡(即在工程树中向上传递)。如果没有祖先节点处理该消息,消息一直传递至工程的根节点。

默认情况下,所有触发器处理各自的消息。您可以通过在 触发器设置 (Trigger Settings) 中设置 设置已处理消息 (Set Message Handled) 属性控制触发器消息处理。

使用入门

要开始使用触发器,请参阅:

关于您可以在 Kanzi Studio 中使用的所有触发器列表,请参阅触发器参考

关于您可以在 Kanzi Studio 中添加到触发器的所有动作列表,请参阅动作参考

添加触发器

添加触发器最常见的位置是使用触发器的节点,但您可以将触发器添加到任何节点。

要添加触发器:

  1. 工程 (Project) 中创建或选择要添加触发器的节点。
    例如,创建一个2D 按钮 (Button 2D) 节点。当您创建2D 按钮 (Button 2D) 节点时,它已有一个 按钮: 点击 (Button:Click) 触发器。
  2. 节点组件 (Node Components) > 触发器 (Triggers) 部分中右键点击,选择添加触发器 (Add Trigger),然后选择一个触发器拦截您想要拦截的消息类型。
    例如,添加附加时 (On Attached) 触发器。附加时 (On Attached) 触发器在 Kanzi 将节点附加到场景图时触发。
  3. 节点组件 (Node Components) > 触发器 (Triggers) 部分中,为您在上一步中添加的触发器点击添加 (Add) 的下拉菜单,然后选择动作。
    例如,选择写入日志 (Write Log) 动作并输入在触发器触发时要写入日志 (Log) 窗口的消息。要验证节点是否接收到输入,写入日志 (Write Log) 动作非常有用。
    您可以添加任意数量的动作。Kanzi 从第一个动作开始按顺序执行动作。

    Kanzi 附加到节点时,它打印您输入的消息,作为日志 (Log) 窗口的日志消息 (Log Message) 属性值。要打开日志 (Log) 窗口,在主菜单中选择窗口 (Window) > 日志 (Log)
  4. (可选) 如果您希望触发器仅在特定条件下触发,在要设置条件的触发器下的 节点组件 (Node Components) > 触发器 (Triggers) 部分,点击 触发器设置 (Trigger Settings),在 触发器设置编辑器 (Trigger Settings Editor) 中点击 添加条件 (Add condition),并定义条件。请参阅为触发器添加条件

设置触发器消息的处理

触发器处理一个消息时,会消耗这个消息,使消息停在该触发器处,而其他节点不能拦截它。请参阅在 Kanzi Studio 中创建自定义消息

要设置触发器消息的处理:

  1. 在要设置消息处理的触发器下 节点组件 (Node Components) > 触发器 (Triggers) 部分,点击 触发器设置 (Trigger Settings)
  2. 触发器设置编辑器 (Trigger Settings Editor) 中设置:

为触发器添加条件

您可以这里使用触发条件设置触发器必须满足哪些条件才能触发。例如,您可以定义条件以在用户导航到特定页面 (Page) 节点时启动触发器,仅当该按钮可见时用户才能点击按钮,或者只有当特定页面 (Page) 节点活动时用户才能滚动视图。

您可以在触发器条件编辑器 (Trigger Condition Editor) 中向触发器添加条件。通过使用和 运算符 (Operator) 属性一起设置的运算符比较您在 值 A (Value A) 部分定义的值和在 值 B (Value B) 部分定义的值,您可以创建条件。

您可以创建条件,使触发器在以下条件下启动:

使用属性中的值创建条件

您可以定义一个触发条件,在您选择的属性获得您在该条件中设置的值时启动触发器。例如,您可以创建一个条件,只有当特定页面 (Page) 节点处于活动状态时,才允许用户滚动滚动视图 (Scroll View) 节点。

要使用属性中的值创建条件:

  1. 工程 (Project) 中选择或创建一个带有您要添加条件的触发器的节点并在触发器的节点组件 (Node Components) 中点击触发器设置 (Trigger Settings)。请参阅添加触发器
    触发器设置编辑器 (Trigger Settings Editor) 即会打开。
    例如,创建一个带有已滚动 (Scrolled) 触发器的2D 滚动视图 (Scroll view 2D) 节点,在节点组件 (Node Components) 中点击该出触发器的 触发器设置 (Trigger Settings)。请参阅使用滚动视图 (Scroll View) 节点
  2. 触发器设置编辑器 (Trigger Settings Editor) 中点击添加条件 (Add condition)
    触发器条件编辑器 (Trigger Condition Editor) 即会打开。
  3. 触发器条件编辑器 (Trigger Condition Editor) 中设置必须满足才能启动触发器的条件。通过使用和 运算符 (Operator) 属性一起设置的运算符比较您在 值 A (Value A) 部分定义的值和在 值 B (Value B) 部分定义的值,您可以创建条件。
    触发器条件编辑器 (Trigger Condition Editor) 中设置:点击保存 (Save)
    在这里您创建了一个条件,当用户导航到页面 (Page) 节点 Media 时,会触发触发器。

使用消息中的值创建条件

您可以定义一个触发条件,在您选择的消息获得您在该条件中设置的值时启动触发器。您可以使用这些触发器的消息中的值:

例如,可以在用户选择列表框 (List Box) 节点中的特定项时启动触发器。

要使用消息中的值创建条件:

  1. 工程 (Project) 中选择或创建一个带有您要添加条件的触发器的节点并在触发器的节点组件 (Node Components) 中点击触发器设置 (Trigger Settings)。请参阅添加触发器
    触发器设置编辑器 (Trigger Settings Editor) 即会打开。
    例如,创建一个带有列表框: 选定项 (List Box: Item Selected) 触发器的2D 网格列表框 (Grid List Box 2D) 节点,在节点组件 (Node Components) 中点击该出触发器的 触发器设置 (Trigger Settings)。请参阅使用网格列表框 (Grid List Box) 节点

  2. 触发器设置编辑器 (Trigger Settings Editor) 中点击添加条件 (Add condition)
    触发器条件编辑器 (Trigger Condition Editor) 即会打开。

  3. 触发器条件编辑器 (Trigger Condition Editor) 中设置必须满足才能启动触发器的条件。通过使用和 运算符 (Operator) 属性一起设置的运算符比较您在 值 A (Value A) 部分定义的值和在 值 B (Value B) 部分定义的值,您可以创建条件。
    触发器条件编辑器 (Trigger Condition Editor) 中设置:点击保存 (Save)
    在本示例中,您创建了一个条件,在用户选择 2D 网格列表框 (Grid List Box 2D) 节点中的第一个项时触发触发器。

移除触发器

要移除触发器,在节点组件 (Node Components) > 触发器 (Triggers) 部分,右键点击要移除的触发器并选择 移除 (Remove)

在 API 中使用触发器

有关详细信息,请参阅 API reference中的 Trigger 类。

另请参阅

触发器

使用消息

触发器参考

动作参考

设置应用程序以从键盘接收输入

节点进入或离开某个状态时的反应

使用滚动视图 (Scroll View) 节点

使用网格列表框 (Grid List Box) 节点

处理用户输入

键盘输入代码参考

使用脚本