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 引入了以下更改:

着色器处理的更改

在以前版本的 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”。

另请参阅

Kanzi 3.9.9 发行说明

已知问题