10、kanzi入门——Hello World与Kanzi Engine API设置属性
一、HelloWorld使用VS打开kanzi工程,然后编辑代码class Helloworld : public ExampleApplication{public:virtual void onConfigure(ApplicationProperties& configuration) KZ_OVERRIDE{configuration.binaryName = "helloworl
·
一、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官方文档》
更多推荐
已为社区贡献1条内容
所有评论(0)