背景:kanzi的帮助文档都是api简单含义,很少有案例的说明。每一次使用API都是一个摸索的过程。记录一下用到的API案例。
1. 按钮事件
界面有一个按钮,点击后C++
处理对应的事件
void MyKanzi::onProjectLoaded() {
Button2DSharedPtr button2D_switch= getScreen()->lookupNode<Button2D>("/RootPage/Grid Layout 2D/Stack Layout 2D/Button");
button2D_switch->addMessageHandler(Button2D::PressedMessage, bind(&MyKanzi::onBtnSwitchClicked, this, std::placeholders::_1));
}void MyKanzi::onBtnSwitchClicked(ButtonConcept::PressedMessageArguments& messageArguments)
{(void)messageArguments;std::cout << __FUNCTION__ << "\n";
}
说明:
- 在
onProjectLoaded
里找到按钮对象,添加消息处理,可以把按钮路径换成别名 - 在处理函数
onBtnSwitchClicke
里添加业务逻辑
2. 查找节点
getScreen()
对应根节点Screen
getRoot()
对应根节点Screen/RootPage
Node2DSharedPtr test = getScreen()->lookupNode<Node2D>("/RootPage/Empty Node 2D");
Node2DSharedPtr test = getRoot()->lookupNode<Node2D>("/RootPage/Empty Node 2D");
Node2DSharedPtr test2 = getScreen()->lookupNode<Node2D>("/#Empty Node 2D_1");
说明:
3. lookupNode
会递归查找子节点对象
3. 动态创建图片节点
- 找到一个父节点
Node2DSharedPtr test = getRoot()->lookupNode<Node2D>("/RootPage/Empty Node 2D");
- 创建图片节点
Image2DSharedPtr img = Image2D::create(getDomain(), "img");
- 创建纹理资源
TextureSharedPtr t = dynamic_pointer_cast<Texture>(getResourceManager()->acquireResource("kzb://untitledkanzisimulate/Textures/Default Texture"));
- 为图片节点设置纹理
img->setImage(t);
- 添加子节点
test->addChild(img);
4. kanzi导出kza,kza转kzb
kanzi->edit->User Preferences
勾选kza选项
正常导出kzb时候,会同时生成kza
kza是xml结构,可以读写。
kza2kzb.exe命令可以把kza转为kzb
"D:\Program Files\Rightware\Kanzi 3_6_10_170\Studio\Bin\kza2kzb.exe" untitledkanzisimulate.kza untitled.kzb