Kanzi 3.9.4 迁移指南

使用此迁移指南将 Kanzi 应用程序从 Kanzi 3.9.3 更新到 Kanzi 3.9.4。

对 3D 节点的面向相机属性的更改。

将 Face to Camera、Face to Camera is Billboarding 和 Face to Camera Cylindrical 布尔属性替换为 Face to Camera Mode 枚举属性。

此表列出了 Constraints 类中属性和方法的更改:

Kanzi 3.9.3

Kanzi 3.9.4

FaceToCameraProperty

FaceToCameraIsBillboardingProperty

FaceToCameraCylindralProperty

FaceToCameraModeProperty

bool isFaceToCamera(const Object& object)

FaceToCameraMode getFaceToCameraMode(const Object& object)

void setFaceToCamera(Object& object, bool value)

void setFaceToCameraMode(Object& object, FaceToCameraMode value)

bool isFaceToCameraBillboarding(const Object& object)

void setFaceToCameraIsBillboarding(Object& object, bool value)

bool isFaceToCameraCylindral(const Object& object)

void setFaceToCameraIsCylindral(Object& object, bool value)

Java API 中的更改

在这些 Assert 函数中,将错误消息参数的类型更改为返回字符串的回调。这可以防止为传递断言而进行冗余的字符串分配:

  • True

  • NotNull

  • Null

例如,Assert.True 调用从

Assert.True(isValid(), "Error message");

至 (To)

Assert.True(isValid(), () -> "Error message");

对文本和2D几何渲染的更改

Kanzi 现在使用虚拟缓冲对象和交错顶点缓冲区渲染文本和所有2D几何图形,而不是从主内存渲染。

Geometry 现在继承自 GPUResource,这意味着它需要访问 Domain,并且创建 Geometry 对象会注册到资源管理器中。为了节省资源,可以预先创建 Geometry 对象,或者根据需要创建并无限期保留,而不是从堆栈中分配。

Kanzi 仍然支持使用平面顶点数据进行渲染,但不推荐这样做,因为 Kanzi WebGL 端口不支持此功能。

此更改简化了 Geometry 接口并移除了该类的变体。此更改移除了以下头文件:

  • kanzi/core.ui/graphics2d/geometry_frame.hpp

  • kanzi/core.ui/graphics2d/geometry_quad.hpp

  • kanzi/core.ui/graphics_backend/gl/geometry_frame.hpp

  • kanzi/core.ui/graphics_backend/gl/geometry_gl.hpp

  • kanzi/core.ui/graphics_backend/gl/geometry_quad.hpp

  • kanzi/core.ui/graphics_backend/nogl/geometry_frame.hpp

  • kanzi/core.ui/graphics_backend/nogl/geometry_quad.hpp

  • kanzi/core.ui/graphics_backend/spansion/geometry_frame.hpp

  • kanzi/core.ui/graphics_backend/spansion/geometry_quad.hpp

请改用 kanzi/core.ui/graphics2d/geometry.hpp。

Kanzi Android framework (droidfw) 中的更改

  • 从 KanziSurfaceView 和 KanziTextureView 视图中移除了 handleVisibilityChanged 方法。Kanzi Android framework (droidfw) 现在跟踪每个连接视图的有效用户可见性,并跳过隐藏视图的渲染。请参阅 处理视图的用户可见性。

  • 在 KanziViewAdapter.handleSurfaceChanged 方法中添加了一个必需的 Surface 参数。

    Kanzi 3.9.3

    Kanzi 3.9.4

    void handleSurfaceChanged(int width, int height)

    void handleSurfaceChanged(Surface surface, int width, int height)

对焦点处理的更改

  • Kanzi 不再尝试在没有应用程序焦点时将键盘焦点设置到激活的 Activity。要控制是否将焦点设置到激活的 Activity:

    • 在 Parallel Activity Host 中的 Activity 中设置 Focus On Activation (ParallelActivityHostConcept::FocusOnActivationProperty) 属性。

    • 在独占活动主机中设置 Focus On Activating Activity (ExclusiveActivityHostConcept::FocusOnActivatingActivityProperty) 属性。

    请参阅 控制是否将焦点设置到激活的 Activity。。

  • 弃用这些函数:

    • FocusManager::isFocusScope() 和 FocusManager::isFocusFence()。

      请改用 FocusManager::getFocusScopeType()。

    • FocusManager::setFocusScope() 和 FocusManager::setFocusFence()。

      请改用 FocusManager::setFocusScopeType()。

移除显式提取过程

Kanzi 现在在布局过程中自动执行以前版本中由显式提取过程处理的功能。这意味着 Kanzi 不再需要遍历节点树两次。

改进在 Node2D 和 Node3D 类中引入了更改:

  • 将 onExtract() 回调重命名为 onTransform()。

  • 已移除 extract() 函数。紧接在 layout() 之后调用 extract() 不再需要。

  • 添加了 transform() 函数以强制重新转换场景。

对原始网格创建函数的更改。

Kanzi 现在支持设置基本网格的细分级别。此改进在 Mesh::createBox 和 Mesh::createPlane 函数中引入了 subdivisions 参数。

Kanzi 3.9.3

Kanzi 3.9.4

MeshSharedPtr createBox(Domain* domain, Vector3 size, string_view name, MaterialSharedPtr material = MaterialSharedPtr());

MeshSharedPtr createBox(Domain* domain, Vector3 size, unsigned int subdivisions, string_view name, MaterialSharedPtr material = MaterialSharedPtr());

MeshSharedPtr createPlane(Domain* domain, float width, float height, bool invertU, bool invertV, string_view name, MaterialSharedPtr material = MaterialSharedPtr());

MeshSharedPtr createPlane(Domain* domain, float width, float height, unsigned int subdivisions, bool invertU, bool invertV, string_view name, MaterialSharedPtr material = MaterialSharedPtr());

对 C++ Code Behind 的更改

此更改仅适用于您使用 Kanzi 版本 3.9.3 创建的项目。

在 <Project Name>/Application/CMakeLists.txt 文件中更改

set(CodeBehind_lib_dir "${CMAKE_CURRENT_SOURCE_DIR}/../Tool_project/CodeBehind")

至 (To)

set(CodeBehind_lib_dir "${CMAKE_CURRENT_SOURCE_DIR}/../Tool_project/CodeBehind/<Project Name>")

另请参阅

Kanzi 3.9.4 发行说明

已知问题