使用点击操纵器

使用点击操纵器可以使用户在 Kanzi 应用程序中点击或轻敲节点。

您可以使用以下方法创建点击操纵器:

点击操纵器是一种输入操纵器,您可以用于在 Kanzi 应用程序中添加手势识别到节点上。您可以通过 Kanzi Engine API 分配输入操纵器。请参阅使用输入操纵器

要为节点启用双击手势,使用多击操纵器。请参阅 使用多击操纵器

使用 Kanzi Studio 为节点启用点击手势

要使用 Kanzi Studio 为节点启用点击手势:

  1. 选择或创建您希望对点击作出反应的节点。
    例如,创建一个图像 (Image) 节点。
  2. 预览 (Preview) 中选择节点工具 (Node tool) ,右键点击要对点击作出反应的节点,在通过动作创建点击触发器 (Create click trigger with action) 菜单中选择一个动作。
    例如,选择写入日志 (Write Log) 动作。

    当您创建带有动作的点击触发器,Kanzi Studio 为该节点添加:
  3. 节点组件 (Node Components) > 触发器 (Triggers) 中配置点击 (Click) 触发器在用户触发它时执行的动作。
    例如,点击写入日志 (Write Log) 动作并输入在用户点击该节点时要写入日志 (Log) 窗口的消息。
  4. 预览 (Preview) 中点击 切换至交互 (Interact) 模式。
    预览 (Preview) 中,当您点击设置为对点击作出反应的节点时,触发器执行您在预览 (Preview)通过动作创建点击触发器 (Create click trigger with action) 中选择的动作。

使用 Kanzi Engine API 为节点启用点击手势

要使用 Kanzi Engine API 为节点启用点击手势:

  1. Kanzi Studio 中使用应用程序 (Application) 模板创建工程。
  2. 工程 (Project) 中创建要启用点击手势的节点。
    例如,创建 2D 空节点 (Empty Node 2D) 节点,将其命名为 ClickNode,并添加内容到该节点。
  3. 工程 (Project) 中选择您在上一步中创建的节点,在属性 (Properties) 中添加可测试命中 (Hit Testable) 属性,并将其设置为启用。
    当您启用属性时,用户能选取节点。
  4. 工程 (Project)按下 Alt 并右键点击 您创建的节点并选择别名 (Alias)
    Kanzi Studio 会创建一个别名(它指向您从中创建该别名的节点),并将该别名添加到它的含资源字典的最近祖先节点的资源字典中。
    使用 # 符号后跟别名名称访问别名目标节点。
  5. 选择文件 (File) > 导出 (Export) > 导出 KZB (Export KZB)
    Kanzi StudioKanzi Studio 工程创建 kzb 文件和配置文件。Kanzi Studio 将导出的文件存储在 <ProjectName>/Application/bin 目录或您在 工程 (Project) > 属性 (Properties)二进制导出目录 (Binary Export Directory) 属性中指定的位置。Kzb 文件包含 Kanzi Studio 工程中的所有节点和资源,您在本地化表中标记为本地化包的资源除外。
    当您从 Visual Studio 中运行您的 Kanzi 应用程序时,您的应用程序就会加载 kzb 文件和配置文件。
  6. 在 Visual Studio 中打开存储在 <ProjectName>/Application/configs/platforms/win32 中的解决方案,并在实现应用程序逻辑的文件中创建并配置点击操纵器:
    1. 为不同的点击消息定义处理程序。在每个处理程序中添加定义特定点击事件行为的代码。
      您还可以在 Kanzi Studio 中使用点击触发器定义行为。请参阅 对您使用 Kanzi Engine API 启用的点击手势作出反应
      例如,要为 ClickMessageClickCancelMessage 消息定义处理程序,在实现应用程序逻辑的类 public 部分之后添加:
      private: 
      
          //为 ClickManipulator::ClickMessage 消息定义处理程序,该消息来自
          //具有可生成 ClickMessage 消息的输入操纵器的节点。
          void onNodeClicked(ClickManipulator::ClickMessageArguments& messageArguments)
          {
              //添加处理点击事件的代码。
          }
      
          //为 ClickManipulator::ClickCancelMessage 消息定义处理程序,该消息来自
          //具有可生成 ClickCancelMessage 消息的输入操纵器的节点。
          void onNodeClickCanceled(ClickManipulator::ClickCancelMessageArguments& messageArguments)
          {
              //添加处理点击取消事件的代码。
          }
    2. onProjectLoaded() 函数中创建 ClickManipulator 操纵器并订阅其消息。
      例如,添加:
          virtual void onProjectLoaded() KZ_OVERRIDE
          {
              ScreenSharedPtr screen = getScreen();
              Domain* domain = getDomain();
      
              //使用别名获取ClickNode 节点。
              NodeSharedPtr clickNode = screen->lookupNode<Node>("#ClickNode");
      
              //创建生成点击消息的输入操纵器。
              ClickManipulatorSharedPtr clickManipulator = ClickManipulator::create(domain);
      
              //添加输入操纵器到 ClickNode 节点。
              clickNode->addInputManipulator(clickManipulator);
              
              //订阅 ClickNode 节点的 ClickManipulator::ClickMessage 消息。
              // ClickManipulator 操纵器在用户点击节点时生成此消息。
              clickNode->addMessageHandler(ClickManipulator::ClickMessage, bind(&MyProject::onNodeClicked, this, placeholders::_1));
      
              //订阅 ClickNode 节点的 ClickManipulator::ClickCancelMessage 消息。
              // ClickManipulator 操纵器在用户第一次按下
              //该节点,然后将指针移动到节点区域外并提起指针时,生成此消息。
              clickNode->addMessageHandler(ClickManipulator::ClickCancelMessage, bind(&MyProject::onNodeClickCanceled, this, placeholders::_1));
          }
  7. 构建和运行应用程序。 请参阅部署 Kanzi 应用程序
    在该应用程序中:

对您使用 Kanzi Engine API 启用的点击手势作出反应

本节介绍了当您使用 Kanzi Engine API 启用点击手势时,如何使用点击触发器对点击手势作出反应。要了解如何仅使用 Kanzi Studio 创建对点击作出反应的节点,请参阅 使用 Kanzi Studio 为节点启用点击手势

使用点击 (Click) 触发器对点击手势作出反应。例如,您可以更改用户点击或轻敲节点时的节点外观。

Kanzi Studio 带有这些点击触发器:

要使用点击 (Click) 触发器:

  1. 使用 Kanzi Engine API 为节点启用点击手势。请参阅 使用 Kanzi Engine API 为节点启用点击手势
  2. 定义您想通过点击触发器设置的行为。
    例如,创建状态机,您可以定义状态以设置节点在不同的点击触发器被触发时的外观。请参阅 创建状态机
  3. 添加和配置点击触发器:
    1. 工程 (Project) 中,选择要为其添加触发器的节点,并在节点组件 (Node Components) > 触发器 (Triggers) 部分添加其中一个点击触发器。
      例如,在工程 (Project) 中选择启用点击手势的节点,并在节点组件 (Node Components) 中添加点击 (Click) 触发器。
    2. 在您在上一步创建的触发器中,点击 触发器设置 (Trigger Settings) 并在 触发器设置编辑器 (Trigger Settings Editor) 中禁用 设置已处理消息 (Set Message Handled) 属性。
      当您禁用 设置已处理消息 (Set Message Handled) 属性,此触发器拦截消息,但不会停止消息。这样您可以让输入操纵器处理该消息。
    3. 在您创建的触发器中,选择 添加 (Add) 下拉菜单中的动作,并配置该动作。
      例如,选择转到状态 (Go to State) 动作并在动作设置中设置:
      • 项 (Item) 设为要启用点击手势的节点
      • 状态 (State) 设为设置节点在点击 (Click) 触发器被触发时的外观的状态
  4. 重复上一步,以添加并配置更多点击触发器。
    例如,添加点击取消 (Click Cancel) 触发器,在触发器的转到状态 (Go to State) 动作中,将状态 (State) 设置为当触发器被触发时设置节点外观的状态。
  5. 选择文件 (File) > 导出 (Export) > 导出 KZB (Export KZB)
  6. 构建和运行应用程序。 请参阅部署 Kanzi 应用程序
    在应用程序中点击或轻敲已启用点击手势的节点。

在 API 中使用点击操纵器

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

另请参阅

处理用户输入

使用多击操纵器

使用长按操纵器

部署 Kanzi 应用程序

使用触发器