并行活动主机¶
Parallel Activity Host 可以同时激活多个子活动。当您激活一个活动时,Parallel Activity Host 会将该活动置于前台。
在 Parallel Activity Host 中,您可以对活动进行分组,以按照您在节点树中定义的顺序显示这些组。当您激活组中的一个活动时,Parallel Activity Host 会将该组中的活动置于前面。例如,这样您可以在常规通知(如电话通知)前面显示关键消息(如引擎故障)。在这两个组中,Parallel Activity Host 按激活顺序显示活动。
使用 Parallel Activity Host¶
要使用 Parallel Activity Host:
在 Activity Browser 中,点击
并创建一个根 Parallel Activity Host。Kanzi Studio 在 RootPage 节点中创建一个 Parallel Activity Host 节点。
在根 Parallel Activity Host 下方的 Activity Browser 中,点击
,选择 Create Activity,并创建或分配一个预设给该 Activity。例如,创建名为 Seatbelt、Phone Call 和 Engine Failure 的活动。对于每个活动,使用相同的名称作为活动预设。
Kanzi Studio 创建活动,将它们添加到 Parallel Activity Host,并为每个活动在 Prefabs 中创建一个预设。
创建一个节点,并使用您想要用来激活或停用活动的触发器。
例如,创建一个 Toggle Button 节点,并使用 Toggle Button: Toggled On 和 Toggle Button: Toggled Off 触发器。
在 Node Tree 中,选择您在上一步中创建的节点,在 Node Components > Triggers 按 Alt 并右键单击 中选择您要用于激活活动的触发器,选择 Activate Activity 操作,并在操作中设置:
将 Target Item 到包含您要激活的 Activity 的 Parallel Activity Host。
将 Activation Path 到 Parallel Activity Host 中您想要激活的 Activity 的路径。
如果您将 Activity 节点嵌套在其他类型的节点中,请在路径中仅包含祖先 Activity 节点。
小技巧
要获取到 Activity 的完整激活路径, 在 Activity Browser 中右键单击一个 Activity 并选择 Copy Activation Path。此命令会将从顶级 Activity Host 到该 Activity 的整个路径复制下来。
Activity Activation Path 仅包含 Activities 和 Activity Hosts。
在 Node Components > Triggers 按 Alt 并右键单击 中,选择您要用于停用活动的触发器,选择 Deactivate Activity 操作,并在操作中设置:
将 Activation Path 到 Parallel Activity Host 中您想要停用的 Activity 的路径。
如果您将 Activity 节点嵌套在其他类型的节点中,请在路径中仅包含祖先 Activity 节点。
将 Target Item 到包含您要停用的 Activity 的 Parallel Activity Host。
在 Preview 中,单击切换按钮以激活和停用并行活动主机中的活动。
在 Parallel Activity Host 中控制虚拟化¶
默认情况下,当您停用一个 Activity 时,Kanzi 会序列化该 Activity 及其子 Activity 的 Activity 属性值。除了您添加的 Activity 属性值外,这还包括有关 Activity 的焦点和激活状态的信息。请记住,Kanzi 不会序列化其他非 Activity 属性的运行时状态。
例如,即使包含该文本框的活动处于非活动状态,并且 Kanzi 卸载其内容,您也可以在 Text Box 中保留用户输入的信息。要实现此目的,在包含 Text Box 的 Activity 中,创建一个字符串活动属性,并在 Text Box 的 Text 属性与您创建的活动属性之间创建双向绑定。
您可以控制 Activities 的虚拟化:
在一个活动中。请参阅 在活动中控制虚拟化。
使用一个 Action。请参阅 使用 Action 控制虚拟化。
在活动中控制虚拟化¶
使用 Preserve History 属性,您可以在 Kanzi 停用该活动时控制活动中活动属性的序列化。
要在活动中控制虚拟化,请在 Activity Browser 或 Prefabs 中,选择您要控制活动属性值序列化的活动。在 Properties 中,添加 Preserve History 属性并将其设置为:
启用以序列化 Activity 属性的值。这是默认值。
当您启用序列化并停用一个 Activity 时,Kanzi 会保留该 Activity 及其子 Activity 的 Activity 属性值。当您激活该 Activity 时,Kanzi 会恢复这些节点中 Activity 属性的序列化值。
禁用以禁用 Activity 属性值的序列化。
当您禁用序列化并停用一个 Activity 时,Kanzi 不会保留该 Activity 及其子 Activity 的属性值。当您激活该 Activity 时,Kanzi 会重置这些节点中 Activity 属性的值。
使用 Action 控制虚拟化¶
使用 Action,您可以在激活或停用 Activity 之前控制 Activity 中属性的序列化。默认情况下,Kanzi 在您激活 Activity 时恢复序列化状态。
要使用 Action 控制虚拟化:
在 Activity Browser、Prefabs 或 Node Tree 中,选择您要从中控制 Activity 属性值序列化的节点。
在 Node Components 中,按 Alt 并右键单击 触发器,并创建一个您想用来控制活动序列化的触发器。
例如,创建一个 On Attached 触发器。
要在激活和活动时控制虚拟化,在您创建的触发器中,按 Alt 并右键单击 Actions,选择 Dispatch Message Action > Activity Host > Activate Activity Action,并在 Action 中将 Reset History 参数设置为:
禁用以在用户激活该活动时恢复活动属性的序列化值。这是默认值。
启用后,当用户激活该活动时,将重置活动属性的序列化值。
要在停用活动时控制虚拟化,请在您创建的触发器中,创建一个 Dispatch Message Action > Activity Host > Deactivate Activity 操作。
例如,使用此方法重置用户取消选择并且应用程序停用该 Activity 时由 Activity 显示的应用程序 UI 状态。
在 Parallel Activity Host 中控制 Activity 持久性¶
默认情况下,当您停用一个活动时,Kanzi 会将该活动从节点树中分离,并删除该活动实例。
使用 Keep Activity Alive 属性,您可以在 Kanzi 停用该活动时控制活动持久性。
要控制活动持久性,请在 Activity Browser 或 Prefabs 中,选择您要控制其持久性的活动。在 Properties 中,添加 Keep Activity Alive 属性并将其设置为:
Detach and Destroy。Kanzi 将该活动从节点树中分离,并删除该活动实例。这是默认值。
Hide and Disable。Kanzi 隐藏并禁用该活动,而不是销毁它。当您再次激活该活动时,Kanzi 会恢复隐藏的活动并显示同一活动。该节点保持停用前的相同状态,即使您为该活动禁用了虚拟化也是如此。
这样,再次激活该活动时可以跳过活动实例化。
激活活动¶
当您激活一个活动时,Kanzi:
使用其预设创建一个 Activity 节点。
将 Activity 节点附加到节点树。
使活动可见。
如果活动主机具有按键焦点且未进行其他配置,则将按键焦点设置为活动。控制是否将焦点设置到激活的 Activity。。
将 Activity 的 Activity Status 属性设置为 Active,并发送
ActivityConcept::ActivityActivatedMessage和ActivityConcept::StatusChangedMessage消息。如果 Activity 的预设件具有激活迁移动画,Activity 会先经过 Activating 状态。请参阅 Activity 的状态管理。
默认情况下,当您停用一个 Activity 时,Kanzi 会序列化该 Activity 及其子 Activity 的 Activity 属性值。除了您添加的 Activity 属性值外,这还包括有关 Activity 的焦点和激活状态的信息。请记住,Kanzi 不会序列化其他非 Activity 属性的运行时状态。
请参阅 在 Parallel Activity Host 中控制虚拟化。
您可以使用以下方式激活 Activity:
Activate Activity 消息。请参阅 使用 Activate Activity 消息激活一个活动。。
一个 Apply Activation Action。请参阅 使用 Apply Activation Action 激活活动。
找出 Activity 是否处于活动状态。¶
要确定一个 Activity 是否处于活动状态,请检查该 Activity 节点的 Activity Status 属性的值。
设置初始活动的 Activity¶
要设置 Parallel Activity Host 中初始处于活动状态的 Activity:
在 Activity Browser 中,选择您希望在 Parallel Activity Host 变为活动状态时处于活动状态的 Activity。
在侧边面板中,启用 InitiallyActive 属性。
当您为某个 Activity 启用 InitiallyActive 属性时,Parallel Activity Host 会在其自身变为活动状态时激活该 Activity,而无需显式激活它。
在 Parallel Activity Host 中,您可以为多个 Activity 启用 InitiallyActive 属性。
使用 Activate Activity 消息激活一个活动。¶
当使用 Activate Activity 消息时:
激活活动的条件过于复杂,无法用属性的值来表示。
您无法提前知道 Activity Host 中的 Activities 的数量。
要使用 Activate Activity 消息激活一个活动:
创建一个 Activity Host,其中包含多个 Activities。
创建一个节点,并设置一个触发器,您要使用该触发器来激活一个 Activity。
例如,创建一个 Toggle Button 节点,并使用 Toggle Button: Toggled On 和 Toggle Button: Toggled Off 触发器在并行活动主机中激活和停用一个活动。
在 Node Tree 中,选择您在上一步中创建的具有触发器的节点,在 Node Components > Triggers 按 Alt 并右键单击 中选择您要用于激活活动的触发器,选择 Dispatch Message Action > Activity Host > Activate Activity 消息,并在操作集中:
将 Target Item 到包含您要激活的 Activity 的 Activity Host。
Activation Path 到您要激活的 Activity 的 Activity Host 的路径。
如果您将 Activity 节点嵌套在其他类型的节点中,请在路径中仅包含祖先 Activity 节点。
小技巧
要获取到 Activity 的完整激活路径, 在 Activity Browser 中右键单击一个 Activity 并选择 Copy Activation Path。此命令会将从顶级 Activity Host 到该 Activity 的整个路径复制下来。
Activity Activation Path 仅包含 Activities 和 Activity Hosts。
要停用并行活动主机中的活动,请重复上一步,但将 Dispatch Message Action > Activity Host > Deactivate Activity 消息添加到您要用于停用该活动的触发器中。
在 Preview 中,单击切换按钮以激活和停用并行活动主机中的活动。
使用 Apply Activation Action 激活活动¶
Apply Activation Action 在包含此操作的 Data Trigger 中,只要条件满足,就会保持活动处于激活状态。当触发条件不再满足时,Kanzi 会将活动的状态回滚到应用操作之前的状态。仅将 Apply Activation Action 与 Data Trigger 一起使用。
当您想将活动的激活与应用程序逻辑同步时,使用 Apply Activation Action。
例如,使用 Apply Activation Action 来显示当属性具有特定值时的集群指示器,然后当该属性的值不再是该值时隐藏相同的指示器。
使用 Data Trigger 时,请记住,Data Trigger 的操作优先于任何其他触发器的操作。
您可以通过完成 教程:控制应用程序 UI 来学习如何使用 Data Trigger 和 Apply Activation Action 控制活动的激活状态。
要使用 Apply Activation Action 激活一个 Activity:
在 Activity Browser 中,创建一个带有 Activity 的 Parallel Activity Host。
例如,创建一个名为 LowBattery 的 Activity 的 Parallel Activity Host 节点。
在 Prefabs 中,添加 Activity 显示的内容。
例如,添加一个低电量警告的图像。
(可选) In the Properties, set the size of the Parallel Activity Host and position of the Activity in the Activity Host.
创建一个节点,用于控制您在第一步中创建的 Activity 的激活状态。
例如,从 Asset Packages 将 Slider 拖动到 Node Tree 中的 Parallel Activity Host 节点。在 Properties 中,将 Slider 放置在 Activity Host 中。
使用 Apply Activation Action 创建一个 Data Trigger:
在 Node Tree 中选择 Parallel Activity Host 节点,在 Node Components 按 Alt 并右键单击 Triggers 中,选择 Data Trigger。
在 Expression 中的 Data Trigger 中,单击
,在 Node Tree 中选择 Slider,并从 Properties 中将 Value 属性拖到 Expression 字段并编辑表达式以{@Slider/RangeConcept.Value}<=20此条件表达式必须评估为
True或False。作为来源,您可以使用属性或数据源中的数据对象。单击 Save。
通过这种方式,当 Slider 中的 Value 属性的值等于或小于 20 时,您可以设置 Data Trigger 来执行 Apply Activation Action。
在 Data Trigger 按 Alt 并右键单击 Actions 中,选择 Apply Activation Action。
在 Apply Activation Action 集中:
Activity Host Path 到 .
Activity Activation Path 到 LowBattery
您在 Activity Activation Path 属性中设置的活动路径是相对于您在 Activity Host Path 属性中设置的活动主机节点的。
Activity Browser 表示 Activity Host 具有带有
图标的 Data Trigger。
小技巧
要获取到 Activity 的完整激活路径, 在 Activity Browser 中右键单击一个 Activity 并选择 Copy Activation Path。此命令会将从顶级 Activity Host 到该 Activity 的整个路径复制下来。
Activity Activation Path 仅包含 Activities 和 Activity Hosts。
在 Preview 中拖动滑块旋钮:
当滑块的 Value 属性的值等于或小于 20 时,Data Trigger 激活您在 Apply Activation Action 中设置的活动。
当条件在包含此操作的 Data Trigger 中满足时,Apply Activation Action 会保持活动激活。
当滑块的 Value 属性的值等于或高于 21 时,Data Trigger 将停用您在 Apply Activation Action 中设置的活动。
当触发条件不再满足时,Kanzi 将活动的状态回滚到应用操作之前的状态。
小技巧
在应用程序开发期间,使用这些 Data Trigger 工具在 Activity Browser 侧面板中:
工具 |
描述 (Description) |
|---|---|
显示 Data Trigger 的位置以及该 Data Trigger 的源活动和目标活动的位置。 |
|
模拟应用 Data Trigger 时的状态。 这使您能够在满足 Data Trigger 条件时查看应用程序的状态,而无需更改应用程序中的属性值。 |
|
在 Node Components 窗口中显示所选的 Data Trigger。 |
在 API 中使用 Activities¶
有关详细信息,请参阅 Activity2D、Activity3D、ParallelActivityHost2D 和 ParallelActivityHost3D 类。