Kanzi入门
1.安装Kanzi。
2.使用Kanzi studio创建工程。
Kanzi创建的工程会包含以下目录结构:
其中,
Tool_project文件夹中存放的是设计师设计的工程,包含kanzi UI的工程的所有文件。
Application文件夹则为代码的工程文件夹。该文件夹下的bin文件夹存放设计师导出的kzb文件,src文件夹存放编写的代码,config里面存放对应的vs、vc、eclipse工程文件。
UI设计师和软件工程师通过bin目录下的kzb资源文件联系起来。UI设计师通过kanzi studio设计工具导出kzb资源文件到该目录,而软件工程师使用engine读取该kzb文件创建界面,监听点击事件,传递数据,实现具体功能。
【设计师设计部分】可以通过以下视频教程进行学习。
http://v.ku6.com/show/eHuNhYr8nd4S7gY7jpwahg...html?st=3_1_2
http://v.17173.com/so-index.html?key=kanzi
http://v.youku.com/v_show/id_XNjU5MTI2ODE2.html?from=y1.7-1.2
【软件工程师编程部分】
1.对于2.8.x版本:
刚创建的Kanzi工程有两个函数,其中kzApplicationConfigure为整个程序的入口,相当于main函数(kanzi把main函数封装在库中了,只提供kzApplicationConfigure出来,kzApplicationConfigure会在创建窗口之前回调)。
如下:
/**
* A typical application configuration function.
*/
KZ_CALLBACK void kzApplicationConfigure(const struct KzaSystemProperties* systemPropert
ies, struct KzaApplicationProperties* configuration)
{
/* Memory reserved for the application. */
configuration->memoryPoolSize = * * ; //设置使用内存的大小,默认20Mb
configuration->binaryName = "binaries.cfg"; //设置读取kzb的配置文件 /* Platform specific configuration parameters. */
#if defined WIN32 || defined __linux__
configuration->windowProperties.style = KZS_WINDOW_STYLE_DEFAULT;
configuration->windowProperties.width = ;
configuration->windowProperties.height = ;
#endif /* List of available entry points implemented. Implementation is optional. */
/* Application lifetime. */
configuration->onStartup = startup;
configuration->onProjectLoaded = projectLoaded;
configuration->onShutdown = shutdown; /* Application events. */
configuration->onApplicationEvent = applicationEventHandler;
configuration->onWindowEvent = windowEventHandler; /* Input events. */
configuration->onKeyInputEvent = keyInputEventHandler;
configuration->onPointerInputEvent = pointerInputEventHandler; /* Render cycle. */
configuration->onPreRender = preRender;
configuration->onPostRender = postRender;
configuration->onUpdate = update;
}
kzApplicationConfigure函数中可做app的配置,设置内存池大小、窗口大小、窗口类型等,
另外就是在里面注册回调函数,如
configuration->onPostRender = postRender;
为注册每一帧渲染后的回调函数。
2.对于3.2版本则改成了c++的风格,如下:
#include <kanzi/kanzi.hpp> class NApplicaiton : public ExampleApplication
{
protected:
virtual void onConfigure(ApplicationProperties& configuration) KZ_OVERRIDE; virtual void onProjectLoaded() KZ_OVERRIDE; virtual void onShutdown() KZ_OVERRIDE; virtual void onKeyInputEvent(const KzsInputEventKey* inputData) KZ_OVERRIDE; private:
NApplicaiton();
~NApplicaiton(); }; Application* createApplication()
{
return new NApplicaiton();
}
之前在2.8.x版本中的 注册回调函数的方式在3.2版本换成了 重写ExampleApplication的虚函数,其作用还是一样的。同样onProjectLoaded会在资源加载完成后背调用。
Kanzi入门的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
随机推荐
- 12.162s 1805.867s
[SQL]DROP PROCEDURE IF EXISTS truncate_insert_sales_rank_toparow_week; 受影响的行: 时间: .001s [SQL] CREATE ...
- 获取唯一UUID/UDID方案
概述 如何保证获取到的UUID能够唯一标识每一台设备呢?我们知道通过UIDevice可以获取到UUIDString,但是如果App被删除了然后重新安装,就会得到不同的UUIDString,这并不是我们 ...
- 7.2.12. MySQL如何优化ORDER BY
在某些情况中,MySQL可以使用一个索引来满足ORDER BY子句,而不需要额外的排序. 即使ORDER BY不确切匹配索引,只要WHERE子句中的所有未使用的索引部分和所有额外的ORDER BY 列 ...
- 文件上传去除"Content-Disposition: form-data"
某个项目中为了统一处理文件上传业务,创建了一个FileUpload Handle,由于上传客户端用到各种技术,当时为了方便断点续传,就直接接收请求中的文件内容(可能是分片),所以处理的不是规范的htt ...
- prototype
- 如何用ajax提交多组同样的数据(数组)到后台?
我在AJAX中这样写 $("#subbutton").click(function(){ var machineCode_1=$("#machineCo ...
- Python开发程序:选课系统
本节作业: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- JAVA Math类
public class MathTest{ public static void main(String[] args) { /*---------下面是三角运算---------*/ //将 ...
- [译]SpringMVC自定义验证注解(SpringMVC custom validation annotations)
在基于SpringMVC框架的开发中,我们经常要对用户提交的字段进行合法性验证,比如整数类型的字段有个范围约束,我们会用@Range(min=1, max=4).在实际应用开发中,我们经常碰到一些自己 ...
- 图像的 SNR 和 PSNR 的计算
PSNR 的公式很容易搜到. http://www.360doc.com/content/12/0605/21/4129998_216244993.shtml http://blog.sina.com ...