使用点击操纵器
使用点击操纵器可以使用户在 Kanzi 应用程序中点击或轻敲节点。
您可以使用以下方法创建点击操纵器:
点击操纵器是一种输入操纵器,您可以用于在 Kanzi 应用程序中添加手势识别到节点上。您可以通过 Kanzi Engine API 分配输入操纵器。请参阅使用输入操纵器。
要为节点启用双击手势,使用多击操纵器。请参阅 使用多击操纵器。
使用 Kanzi Studio 为节点启用点击手势
要使用 Kanzi Studio 为节点启用点击手势:
- 选择或创建您希望对点击作出反应的节点。
例如,创建一个图像 (Image) 节点。
- 在预览 (Preview) 中选择节点工具 (Node tool) ,右键点击要对点击作出反应的节点,在通过动作创建点击触发器 (Create click trigger with action) 菜单中选择一个动作。
例如,选择写入日志 (Write Log) 动作。
当您创建带有动作的点击触发器,Kanzi Studio 为该节点添加:- 带有您选择的动作的点击 (Click) 触发器
指针仍在按钮区域内时用户按下而后松开,即会触发 点击 (Click) 触发器。 - 点击已启用 (Click Enabled) 属性并将其设置为已启用
当您启用属性时,将安装可生成点击消息的点击操纵器。
- 可测试命中 (Hit Testable) 属性并将其设置为已启用
当您启用属性时,用户能选取节点。请参阅 定义哪个节点接收用户输入。
- 在节点组件 (Node Components) > 触发器 (Triggers) 中配置点击 (Click) 触发器在用户触发它时执行的动作。
例如,点击写入日志 (Write Log) 动作并输入在用户点击该节点时要写入日志 (Log) 窗口的消息。
- 在预览 (Preview) 中点击 切换至交互 (Interact) 模式。
在预览 (Preview) 中,当您点击设置为对点击作出反应的节点时,触发器执行您在预览 (Preview) 的通过动作创建点击触发器 (Create click trigger with action) 中选择的动作。
使用 Kanzi Engine API 为节点启用点击手势
要使用 Kanzi Engine API 为节点启用点击手势:
- 在 Kanzi Studio 中使用应用程序 (Application) 模板创建工程。
- 在工程 (Project) 中创建要启用点击手势的节点。
例如,创建 2D 空节点 (Empty Node 2D) 节点,将其命名为 ClickNode,并添加内容到该节点。
- 在 中选择您在上一步中创建的节点,在属性 (Properties) 中添加可测试命中 (Hit Testable) 属性,并将其设置为启用。
当您启用属性时,用户能选取节点。
- 在 工程 (Project) 中 按下 Alt 并右键点击 您创建的节点并选择别名 (Alias)。
Kanzi Studio 会创建一个别名(它指向您从中创建该别名的节点),并将该别名添加到它的含资源字典的最近祖先节点的资源字典中。
使用 #
符号后跟别名名称访问别名目标节点。
- 选择 > 导出 (Export) > 导出 KZB (Export KZB)。
Kanzi Studio 从 Kanzi Studio 工程创建 kzb 文件和配置文件。Kanzi Studio 将导出的文件存储在 <ProjectName>/Application/bin 目录或您在 > 的二进制导出目录 (Binary Export Directory) 属性中指定的位置。Kzb 文件包含 Kanzi Studio 工程中的所有节点和资源,您在本地化表中标记为本地化包的资源除外。
当您从 Visual Studio 中运行您的 Kanzi 应用程序时,您的应用程序就会加载 kzb 文件和配置文件。
- 在 Visual Studio 中打开存储在 <ProjectName>/Application/configs/platforms/win32 中的解决方案,并在实现应用程序逻辑的文件中创建并配置点击操纵器:
- 为不同的点击消息定义处理程序。在每个处理程序中添加定义特定点击事件行为的代码。
您还可以在 Kanzi Studio 中使用点击触发器定义行为。请参阅 对您使用 Kanzi Engine API 启用的点击手势作出反应。
例如,要为 ClickMessage
和 ClickCancelMessage
消息定义处理程序,在实现应用程序逻辑的类 public 部分之后添加:
private:
//为 ClickManipulator::ClickMessage
消息定义处理程序,该消息来自
//具有可生成 ClickMessage 消息的输入操纵器的节点。
void onNodeClicked(ClickManipulator::ClickMessageArguments& messageArguments)
{
//添加处理点击事件的代码。
}
//为 ClickManipulator::ClickCancelMessage
消息定义处理程序,该消息来自
//具有可生成 ClickCancelMessage 消息的输入操纵器的节点。
void onNodeClickCanceled(ClickManipulator::ClickCancelMessageArguments& messageArguments)
{
//添加处理点击取消事件的代码。
}
- 在
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));
}
- 构建和运行应用程序。 请参阅部署 Kanzi 应用程序。
在该应用程序中:- 点击要启用点击手势的节点。应用程序执行您在处理程序中为
ClickMessage
消息定义的行为。 - 按下已启用点击手势的节点,然后将指针移到节点区域之外,再松开指针。应用程序执行您在处理程序中为
ClickCancelMessage
消息定义的行为。
对您使用 Kanzi Engine API 启用的点击手势作出反应
本节介绍了当您使用 Kanzi Engine API 启用点击手势时,如何使用点击触发器对点击手势作出反应。要了解如何仅使用 Kanzi Studio 创建对点击作出反应的节点,请参阅 使用 Kanzi Studio 为节点启用点击手势。
使用点击 (Click) 触发器对点击手势作出反应。例如,您可以更改用户点击或轻敲节点时的节点外观。
Kanzi Studio 带有这些点击触发器:
- 指针仍在按钮区域内时用户按下而后松开,即会触发 点击 (Click) 触发器。
- 点击开始 (Click Begin) 触发器会在用户按下节点区域时触发。
- 点击取消 (Click Cancel) 触发器会触发:
- 用户先在节点区域按下,然后将指针移到节点区域之外,然后松开指针。
- 用户触发 长按 (Long Press) 触发器时。
- 点击输入 (Click Enter) 触发器会触发:
- 用户在节点区域按下时。
- 用户在节点区域按下,在按住指针的同时将指针移动到节点区域之外,然后移回到节点区域。
- 点击离开 (Click Leave) 触发器会触发:
- 用户在节点区域按下,然后提起指针时。
- 用户触发 按钮: 长按 (Button: Long Press) 触发器时。
- 用户在节点区域按下,然后将指针移到节点区域之外时。
要使用点击 (Click) 触发器:
- 使用 Kanzi Engine API 为节点启用点击手势。请参阅 使用 Kanzi Engine API 为节点启用点击手势。
- 定义您想通过点击触发器设置的行为。
例如,创建状态机,您可以定义状态以设置节点在不同的点击触发器被触发时的外观。请参阅 创建状态机。
- 添加和配置点击触发器:
- 在工程 (Project) 中,选择要为其添加触发器的节点,并在节点组件 (Node Components) > 触发器 (Triggers) 部分添加其中一个点击触发器。
例如,在工程 (Project) 中选择启用点击手势的节点,并在节点组件 (Node Components) 中添加点击 (Click) 触发器。
- 在您在上一步创建的触发器中,点击 触发器设置 (Trigger Settings) 并在 触发器设置编辑器 (Trigger Settings Editor) 中禁用 设置已处理消息 (Set Message Handled) 属性。
当您禁用 设置已处理消息 (Set Message Handled) 属性,此触发器拦截消息,但不会停止消息。这样您可以让输入操纵器处理该消息。
- 在您创建的触发器中,选择 下拉菜单中的动作,并配置该动作。
例如,选择转到状态 (Go to State) 动作并在动作设置中设置:- 项 (Item) 设为要启用点击手势的节点
- 状态 (State) 设为设置节点在点击 (Click) 触发器被触发时的外观的状态
- 重复上一步,以添加并配置更多点击触发器。
例如,添加点击取消 (Click Cancel) 触发器,在触发器的转到状态 (Go to State) 动作中,将状态 (State) 设置为当触发器被触发时设置节点外观的状态。
- 选择 > 导出 (Export) > 导出 KZB (Export KZB)。
- 构建和运行应用程序。 请参阅部署 Kanzi 应用程序。
在应用程序中点击或轻敲已启用点击手势的节点。
在 API 中使用点击操纵器
有关详细信息,请参阅 API reference 中的 ClickManipulator
类。
另请参阅
处理用户输入
使用多击操纵器
使用长按操纵器
部署 Kanzi 应用程序
使用触发器
打开导航