1:概念
- 触发器Triggle 和动作Action 可用于创建基于用户输入的交互。
- 节点定义大多数消息处理行为,所有Kanzi节点可以发送并接收消息,并且能通过触发器拦截这些消息。特定 节点默认接收特定用户输入事件的消息。例如:按钮Button 节点默认接收点击消息,滚动视图(Scroll View)节点默认接收滚动消息。
在kanzi 中,这些概念与定义事件驱动逻辑有关:
输入和命中测试:节点如果带对已接收输入类型作出反应的操纵器,则能生成消息(例如:点击消息)
输入操纵器:对特定类型的输入手势作出反应的操纵器,如平移,点击或长按。在Kanzi Studio中,您可以使用已包含特定类型操纵器的节点,或者您可以使用Kanzi Engine API添加输入操纵器。例如:滚动视图(Scroll View)节点包含平移操纵器,按钮节点(Button)包含点击操纵器。
消息:节点使用消息信息通信,消息通过通过隧道和冒泡进程在节点之间传递。消息在隧道式传递期间到达其目标节点,在冒泡式传递期间到达祖先节点,直到触发器拦截该消息并将其设置为已处理。这样您就可以在目标节点放入 触发器。
触发器:触发器对消息或事件作出反应,并应用逻辑。Kanzi包括最常用的动作类型,如设置属性(set Property) 或转到状态(Go to state)
动作:动作是触发器的结果。Kanzi包括一般动作,如设置属性(set Property)、写入日志(Write log),激活主题(Active Theme),可用于控制特定类型的动作,如转到状态(Go to state),设置滚动目标(Set Scroll Target)或导航至页面(Navigate to Page)
2: 触发器消息
当触发器拦截根据动作生成的消息时,您可以设置触发器对该消息执行的动作,您可以:
- 拦截消息:对其进行操作,并让它继续在工程树中向上或向下传递
- 拦截消息:对其进行操作,并处理消息,触发器处理一个消息时,会消耗这个消息,使消息停留在该触发器处,而其他节点不能拦截它。
- 通过触发器,您可以在消息产生的节点拦截消息,或者在其任何祖先节点或子孙节点的触发器中拦截消息。
- 您也可以在相同节点拦截许多不同的消息类型,当消息沿工程树向上传递时,消息为冒泡式传递,当消息沿工程树向下传递时,消息为隧道式传递。所以,您可在创建消息的动作中设置消息是否通过冒泡式,隧道式或者两者结合起来。
3:添加触发器案例
添加触发器最常见的位置是使用触发器的节点,但您可以将触发器添加到任何节点。
3.1: 案例:添加触发器以及给触发器添加动作(Action)
创建一个2D按钮(Button 2D)节点,给节点添加:点击触发器(Button::click) ,附加时(on Attach)触发器,并给触发器添加动作。
3.2 案例:添加触发器以及给触发器添加条件(Condition)
您可以使用触发条件设置触发器必须满足哪些条件才能触发。
例如:您可以定义条件:
- 比如用户在导航到特定页面(page)节点时启动触发器。
- 仅当该按钮可见时用户才能点击按钮
- 或者只有当特定页面 page 节点活动时用户才能滚动视图
案例:您可以创建一个条件,只有当特定页面 page 节点处于活动状态时间,才允许用户滚动视图(Scroll View)节点。