[KANZI]Kanzi Engine API “lookupNode“使用注意事项

背景

在平时项目中编写Kanzi Engine 插件或编写Kanzi Application程序中,我们会经常的使用lookupNode这个Api去获取要查询的节点。

根据Kanzi官方文档中对这个Api的描述,”通过使用指定路径或别名查找指定类型的节点,返回该节点。”

lookupNode通常与getScreen搭配使用。

在Kanzi中,我们通常将我们要查询的节点设置为别名。

根据lookupNode这个Api入参的解释,我们可以将参数以字符串形式的别名或路径传递进去,但执行下面的示例代码。我们会发现通过别名(第五行)查找节点的时候,我们可以获取这个节点的指针数据。但我们如果使用绝对路径(第八行)的时候,会获取一个空指针

// 获取屏幕单例
ScreenSharedPtr screenNode = getScreen();

// 使用查找别名为helloworld的TextBlock2D的节点 Success!
TextBlock2DSharedPtr text2dNode = screenNode->lookupNode<TextBlock2D>("#helloworld");

// 使用指定路径查找TextBlock2D的节点 Error! return empty
TextBlock2DSharedPtr text2dNode = screenNode->lookupNode<TextBlock2D>("Screens/Screen/RootPag
e/Text Block 2D");

解决方案

由于我们获取的screenNode,从screenNode下查找节点,我们如果要以路径为入参,需要传入的参数是相对路径。

// 获取屏幕单例
ScreenSharedPtr screenNode = getScreen();

// 使用查找别名为helloworld的TextBlock2D的节点 Success!
TextBlock2DSharedPtr text2dNode = screenNode->lookupNode<TextBlock2D>("#helloworld");

// 使用指定路径查找TextBlock2D的节点 Success!
TextBlock2DSharedPtr text2dNode = screenNode->lookupNode<TextBlock2D>("./RootPag
e/Text Block 2D");

通过传入以screennode为根节点的相对路径,就可以获取相应的节点信息。

资源推荐

如果大家想了解更过关于Kanzi Engine plugin的更多学习信息,可以B站订阅“中科创达-智能座舱”官方号,https://space.bilibili.com/301867101/channel/series。目前内含Kanzi插件教程/Kanzi仪表教程/Kanzi零基础教程,后续会有课程陆续上新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值