一、HelloWorld

使用VS打开kanzi工程,然后编辑代码

class Helloworld : public ExampleApplication
{
public:virtual void onConfigure(ApplicationProperties& configuration) KZ_OVERRIDE{configuration.binaryName = "helloworld.kzb.cfg";
//这行代码的作用是设置kzb文件所在的配置文件,如果不加,kzb中的资源也会生成,但是不会加载到显示界面,显示界面就是黑的}virtual void onProjectLoaded() KZ_OVERRIDE{// Project file has been loaded from .kzb file.kzLogInfo(KZ_LOG_CATEGORY_GENERIC, ("hello world"));// Add initialization code here.}
};Application* createApplication()
{return new Helloworld;
}

其中

kzLogInfo(KZ_LOG_CATEGORY_GENERIC, ("hello world"));

表示在Debug模式下在控制台输出对应的message,message必须用括号括起来,因为kzLogInfo是个宏,该宏在Release模式下无效

其中,onConfigure函数作用是设置配置文件并在读取配置文件之前进行调用

其中,helloworld.kzb.cfg中包含了具体读取的文件名

而该文件名中包含了工程中的各种资源的路径和节点对象,通过该文件可以对节点对象进行操控和对资源进行加载

onProjectLoaded是一个回调函数,调用时机是在加载kzb文件并对kzb数据进行初始化完成后。所以,当执行到onProjectLoaded时,所有的资源就已经可用了

二、使用Kanzi API进行节点操作

接着在上述工程中创建一个2D文本,并重命名

重命名可以随便

然后再onProjectLoaded函数中添加如下代码

virtual void onProjectLoaded() KZ_OVERRIDE
{cout << __func__ << endl;// Project file has been loaded from .kzb file.kzLogInfo(KZ_LOG_CATEGORY_GENERIC, ("hello world"));ScreenSharedPtr screenNode = getScreen();//获取屏幕单例TextBlock2DSharedPtr text2dNode = screenNode->lookupNode<TextBlock2D>("#helloworld");//遍历TextBlock2D节点,查找别名为helloworld的TextBlock2D的节点//#helloworld,猜测该函数中会使用宏链接,通过前面的#将字符串转化为类名,从而生成对象text2dNode->setText("helloworld");//set接口// Add initialization code here.
}

注意:每次对kanzi工程重新编辑时,都要重新导出kzb文件,否则kzb文件和代码不一致,会访问非法内存

整体代码如下

// Use kanzi.hpp only when you are learning to develop Kanzi applications.
// To improve compilation time in production projects, include only the header files of the Kanzi functionality you are using.
#include <kanzi/kanzi.hpp>
#include <iostream>using namespace kanzi;
using namespace std;class Helloworld : public ExampleApplication
{
public:virtual void onConfigure(ApplicationProperties& configuration) KZ_OVERRIDE{configuration.binaryName = "helloworld.kzb.cfg";}virtual void onProjectLoaded() KZ_OVERRIDE{cout << __func__ << endl;// Project file has been loaded from .kzb file.kzLogInfo(KZ_LOG_CATEGORY_GENERIC, ("hello world"));ScreenSharedPtr screenNode = getScreen();TextBlock2DSharedPtr text2dNode = screenNode->lookupNode<TextBlock2D>("#helloworld");text2dNode->setText("helloworld");// Add initialization code here.}
};Application* createApplication()
{return new Helloworld;
}

参考

《Kanzi官方文档》

10、kanzi入门——Hello World与Kanzi Engine API设置属性相关推荐

  1. KANZI入门第一篇之kanzi详解,教你轻松学kanzi

    1.安装Kanzi. 2.使用Kanzi studio创建工程. Kanzi创建的工程会包含以下目录结构: 其中, Tool_project文件夹中存放的是设计师设计的工程,包含kanzi UI的工程 ...

  2. 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之植物篇

    目录 1.单卡片无CD 1.1 思路一 1.2 思路二 2.全卡片无CD 3.豌豆射手射速修改(修改植物射速) 4.实现豌豆射手发射"玉米加农炮"(思路) 上一期教程中,我们学习了 ...

  3. Kanzi学习教程培训教程-Kanzi的简介和安装

    如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额1元起步,多少随意 锋影 e-mail:174176320@qq.com Kanzi UI Solution是一个完整的UI ...

  4. 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇

    目录 1.跳关(任意选择关卡) 2.修改金币值 3.实现自动收集阳光 上一期教程中,我们学习了寻找植物大战僵尸僵尸距离基址.实现"秒杀"僵尸的方法.PS:上篇链接:[CE入门教程] ...

  5. GEE_API Docs_Tutorials_1.编程基础和Earth Engine API入门

    API Docs_Tutorials_1.编程基础和Earth Engine API入门 一.Introduction to JavaScript for Earth Engine(JavaScrip ...

  6. 教程 | 10分钟入门简笔画(哆啦A梦篇)

    多啦A梦主题曲 - 腾讯视频 从小就喜欢小叮当这个形象,不知道为什么后来改成了多啦A梦. 多啦A梦之歌,时常萦绕在耳旁: 心中有许多愿望,能够实现有多棒,只有哆啦a梦可以带着我实现梦想 可爱圆圆胖脸庞 ...

  7. 大神的日语学习方法,10天入门,2个月达到N3水平,7个月突破N1

    标题:大神的日语学习方法,10天入门,2个月达到N3水平,7个月突破N1,我先收藏起来,我晕,颠覆了我学习语言的思维,按照这个办法可以去攻克其他语种了         一.前言  很多同学问我学习日语 ...

  8. 10分钟入门 ANSA API

      扫描下方二维码关注我的微信公众号 - CAE软件二次开发Lab阅读全文! 文章目录 10分钟入门 ANSA API Script Editor (脚本编辑器) Modules(模块) 在ANSA中 ...

  9. 微信小程序怎么在wxml中插入多个图片_白云工商带你10分钟入门微信小程序开发...

    10分钟入门微信小程序开发 程序开发难吗? No!来白云工商带你10分钟入门微信小程序开发! 英语不好能学好程序开发吗? 当然能,程序开发常见的也就那几个单词,只要热爱,非常简单! 欣赏 首先,来欣赏 ...

最新文章

  1. C#算法大全-1-Hanoi
  2. 数据标准化处理,data.mean和data.std
  3. golang defer简介 goland 警告提示 possible resource leak,difer is called in a for loop 原因
  4. Windows系统下nodejs、npm、express的下载和安装教程详解
  5. wxWidgets:wxPickerBase类用法
  6. sylixos与harmonyOS,SylixOS 下的IO系统调用
  7. 腾讯加入QQ群 连接代码
  8. ug冲模标准件库_UG NX插件
  9. java 修改pdf文档的页面的大小
  10. mint-ui引用iconfont图标
  11. 住宅IP和机房IP有什么区别,爬虫用哪种好?
  12. 前端实现“查看更多”效果
  13. 初探Spring Boot + MySQL + jpa
  14. java项目——人机猜拳
  15. .NET Core 用 Blazor 做 jmeter 系列视频
  16. 河南省多校联盟二-C
  17. Unit mysqld.service entered failed state
  18. MATLAB实现RSA加密解密
  19. Java 设计模式之Builder模式
  20. 凸多边形的最优三角划分

热门文章

  1. Mybatis 主键插入回显
  2. 实现div边框可拖拽改变宽度
  3. 读书笔记--室内配电
  4. Angular Elements,四步将Angular 组件转换为 web 组件
  5. 软件测试人员面试指南(一)-测试简历如何编写
  6. 【QGIS入门实战精品教程】5.2:QGIS自定义坐标系案例教程
  7. 如何修改C盘下的hosts文件
  8. 求数列极差(贪心算法)
  9. STVD #error clnk Debugadc.lkf1 symbol _assert_failed
  10. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第二讲html运行原理及结构