Kanzi 3.9.9 迁移指南¶
使用此迁移指南将 Kanzi 应用程序从 Kanzi 3.9.8 更新到 Kanzi 3.9.9。
更改为 Kanzi Java API¶
大多数
create函数现在返回相应类的ObjectRef,而不是基类。您可以直接从返回值中使用基类和派生功能,而无需进行类转换。例如:
Kanzi 3.9.8
Kanzi 3.9.9
返回类型
<T extends Resource> ObjectRef<T> ColorBrush.create(Domain domain)ObjectRef<ColorBrush> ColorBrush.create(Domain domain)Usage
ObjectRef<Resource> myBrush = ColorBrush.create(domain, "myBrush")ObjectRef<ColorBrush> myBrush = ColorBrush.create(domain, "myBrush")为了符合 Java 的索引约定,所有表示索引的方法参数和返回值现在使用
int。例如:
Kanzi 3.9.8
Kanzi 3.9.9
public float Vector2.get(long index)public float Vector2.get(int index)public Vector3 getRow(long index)public Vector3 getRow(int index)已移除
BitmapFont.create函数。该函数未按预期工作,因为BitmapFont类没有公共构造函数。
画笔渲染的更改¶
在早期版本的 Kanzi 中,在某些情况下,在 2D 节点中设置画笔属性不起作用。Kanzi 在布局阶段确定了渲染画笔的需要,这导致只有在画笔中设置的属性值会影响渲染结果。
Kanzi 3.9.9 在渲染阶段决定画笔渲染,并考虑所有属性值的来源。
改进为画笔渲染 API 引入了以下更改:
添加了以下函数:
BrushRenderer::getBlendModeOverride和BrushRenderer::setBlendModeOverrideBrushRenderer::getOpaquenessHint和BrushRenderer::setOpaquenessHintkanzi::GlRenderValueBinding::getBlendModeOverridekanzi::GlRenderValueBinding::getOpaquenessHint和kanzi::GlRenderValueBinding::setOpaquenessHintkanzi::GlRenderValueBinding::getTranslucencyHint和kanzi::GlRenderValueBinding::setTranslucencyHintNodeVisual2D::BrushState::clearBrush和NodeVisual2D::BrushState::setBrush
在
BrushRenderer::bindOverride函数中,将返回值的类型更改为 Boolean。将
NodeVisual2D::storeRenderingParameters函数重命名为NodeVisual2D::updateRender,并删除了translucencyHint参数。将
NodeVisual2D::updateBrushRenderers函数重命名为NodeVisual2D::updateBlendSettings。将这些函数设为
const:kanzi::GlRenderValueBinding::getBlendModeValue
已移除:
来自
Brush类:TranslucencyBits枚举器getBlendMode、isOpaque、isTranslucent、setContentTranslucent和setRenderable函数。
从继承
Brush的类中,initialize和calculateRenderingProperties函数BrushRenderer::hasRenderModeColorBrushRenderer::updateRenderMode,TextureBrushRenderer::updateRenderModeGlRenderValueBinding::setBlendModeFallbackNode2D::isForegroundTranslucencyRequested从
BrushRenderer::updateRender函数中,blendMode和translucencyHint参数。从
BrushRenderer::updateRenderOverride函数中,blendMode和translucencyHint参数。从
NodeCompositor2D::updateRender函数中,translucencyHint参数。
着色器处理的更改¶
在以前版本的 Kanzi 中,当 Kanzi Studio 无法解析着色器时,Kanzi 将着色器代码写入 kzb 文件而不进行预处理。Kanzi 3.9.9 用渲染纯红色的错误着色器替换了此类着色器。
您可以使用 Kanzi Engine C++ API 来创建和使用 Kanzi Studio 不支持的着色器。请参阅 ShaderProgram。
对变形权重的更改¶
在之前的 Kanzi 版本中,当您为 Model3D 节点设置变形网格时,Kanzi Engine 会用 kanzi::Morph 中的默认权重覆盖变形权重。Kanzi 3.9.9 会保留变形权重。
要复现旧的行为,请将 Model3D::MeshProperty 设置为 nullptr,然后分配新的 kanzi::Morph。
布尔值到字符串转换的更改¶
在以前的 Kanzi 版本中,从布尔值到字符串的转换并不总是产生相同的值。例如:
Set Property 操作根据布尔属性的值设置字符串属性的值,结果为 “1” 或 “0”。
在 Kanzi Engine C++ API 中,任何布尔值到字符串的属性绑定都会导致 “1” 或 “0”。
在绑定表达式中,隐式转换布尔值字面量为字符串时,结果为 “True” 或 “False”,但使用 string 进行转换时,结果为 “true” 或 “false”。
在 Kanzi 3.9.9 中,所有从布尔值到字符串的转换结果为小写的 “true” 或 “false”。
要将您的 Kanzi 应用程序从早期版本迁移过来,确保将所有与布尔值进行比较的字符串值为小写的 “true” 或 “false”。
例如:在一个状态管理器中,其字符串控制器属性通过使用 Set Property 操作从布尔属性获取其值,将状态更改为使用 “true” 和 “false” 而不是 “1” 和 “0”。