10、kanzi入门——Hello World与Kanzi Engine API设置属性
一、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设置属性相关推荐
- KANZI入门第一篇之kanzi详解,教你轻松学kanzi
1.安装Kanzi. 2.使用Kanzi studio创建工程. Kanzi创建的工程会包含以下目录结构: 其中, Tool_project文件夹中存放的是设计师设计的工程,包含kanzi UI的工程 ...
- 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之植物篇
目录 1.单卡片无CD 1.1 思路一 1.2 思路二 2.全卡片无CD 3.豌豆射手射速修改(修改植物射速) 4.实现豌豆射手发射"玉米加农炮"(思路) 上一期教程中,我们学习了 ...
- Kanzi学习教程培训教程-Kanzi的简介和安装
如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额1元起步,多少随意 锋影 e-mail:174176320@qq.com Kanzi UI Solution是一个完整的UI ...
- 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇
目录 1.跳关(任意选择关卡) 2.修改金币值 3.实现自动收集阳光 上一期教程中,我们学习了寻找植物大战僵尸僵尸距离基址.实现"秒杀"僵尸的方法.PS:上篇链接:[CE入门教程] ...
- GEE_API Docs_Tutorials_1.编程基础和Earth Engine API入门
API Docs_Tutorials_1.编程基础和Earth Engine API入门 一.Introduction to JavaScript for Earth Engine(JavaScrip ...
- 教程 | 10分钟入门简笔画(哆啦A梦篇)
多啦A梦主题曲 - 腾讯视频 从小就喜欢小叮当这个形象,不知道为什么后来改成了多啦A梦. 多啦A梦之歌,时常萦绕在耳旁: 心中有许多愿望,能够实现有多棒,只有哆啦a梦可以带着我实现梦想 可爱圆圆胖脸庞 ...
- 大神的日语学习方法,10天入门,2个月达到N3水平,7个月突破N1
标题:大神的日语学习方法,10天入门,2个月达到N3水平,7个月突破N1,我先收藏起来,我晕,颠覆了我学习语言的思维,按照这个办法可以去攻克其他语种了 一.前言 很多同学问我学习日语 ...
- 10分钟入门 ANSA API
扫描下方二维码关注我的微信公众号 - CAE软件二次开发Lab阅读全文! 文章目录 10分钟入门 ANSA API Script Editor (脚本编辑器) Modules(模块) 在ANSA中 ...
- 微信小程序怎么在wxml中插入多个图片_白云工商带你10分钟入门微信小程序开发...
10分钟入门微信小程序开发 程序开发难吗? No!来白云工商带你10分钟入门微信小程序开发! 英语不好能学好程序开发吗? 当然能,程序开发常见的也就那几个单词,只要热爱,非常简单! 欣赏 首先,来欣赏 ...
最新文章
- C#算法大全-1-Hanoi
- 数据标准化处理,data.mean和data.std
- golang defer简介 goland 警告提示 possible resource leak,difer is called in a for loop 原因
- Windows系统下nodejs、npm、express的下载和安装教程详解
- wxWidgets:wxPickerBase类用法
- sylixos与harmonyOS,SylixOS 下的IO系统调用
- 腾讯加入QQ群 连接代码
- ug冲模标准件库_UG NX插件
- java 修改pdf文档的页面的大小
- mint-ui引用iconfont图标
- 住宅IP和机房IP有什么区别,爬虫用哪种好?
- 前端实现“查看更多”效果
- 初探Spring Boot + MySQL + jpa
- java项目——人机猜拳
- .NET Core 用 Blazor 做 jmeter 系列视频
- 河南省多校联盟二-C
- Unit mysqld.service entered failed state
- MATLAB实现RSA加密解密
- Java 设计模式之Builder模式
- 凸多边形的最优三角划分